我正在使用AcornJS并试图远离全局变量。我正在寻找一个功能范例,它允许我从types.visit
函数VID
函数VCE
和[type, path]
中累积来自两个处理程序的数据。我在下面设法将它们解析为单个函数,但我真正需要的是在发现它们时积累这些值。我试图在没有声明的全局变量的情况下完成所有这些操作。是否可以让函数返回许多const VID = 'visitImportDeclaration'
const VCE = 'visitCallExpression'
const acornVisitCb = (type) => (path) => [type, path]
const getTypesAndPaths = (acornAst) => types.visit(acornAst,{
[VID]: acornVisitCb(VID),
[VCE]: acornVisitCb(VCE)
})
组合的数组?
results
如果有帮助,这种情况是同步的。
这是一个工作的例子,但是有定义的状态'结果'。这可以在没有function getTypesAndPaths = (acornAst) => {
const results = []
types.visit(acornAst, {
[VID]: (path) => results.push([VID, path])
[VCE]: (path) => results.push([VCE, path])
})
return results
}
的情况下完成吗?
{{1}}
答案 0 :(得分:0)
const {chain} = lodash
const VID = 'visitImportDeclaration'
const VCE = 'visitCallExpression'
const cbPush = (arr, ...top) => (...bot) => arr.push([...top, ...bot])
const getVisitations = (acornPaths) => ({[VID]: cbPush(acornPaths, VID), [VCE]: cbPush(acornPaths, VID)})
const getAcornPaths = (acornAst, acornPaths) => types.visit(acornAst, getVisitations(acornPaths))
const getDependenciesFromAcornAst = (acornAst, acornPaths) => chain(getAcornPaths(acornAst, acornPaths)).thru(() => acornPaths).value()