我有一个递归函数:
module.exports = async function (file, doc, name) {
await funcOne(file, doc)
await funcTwo(file, doc, name)
await funcThree(file, doc, name)
}
解析器功能:
async function myFuntion(path, name, callback) {
...
callback(file, doc, files[p][1])
...
}
它在递归函数内多次调用的回调:
async function myFuntion(path, name, callback) {
...
await callback(file, doc, files[p][1])
... next lines need to wait to finish callback
}
问题是我想在回拨时等待:
{{1}}
我试图找到如何做到这一点。
可以这样做吗?感谢
答案 0 :(得分:1)
可以这样做吗?
是的,可以使用await
,但要实现这个目的:
await callback(file, doc, files[p][1])
您的callback()
需要返回承诺。从你的代码来看,它并不清楚。
答案 1 :(得分:1)
我这样做了:
我用ftp函数中的async编辑我的main函数:
let main = () => {
ftp(_defaultPath, _start, async (file, doc, name) => {
await parser(file, doc, name)
})
}
我添加了对解析器函数的承诺:
module.exports = function (file, doc, name) {
return new Promise( async (resolve, reject) => {
try {
await funcOne(file, doc)
await funcTwo(file, doc, name)
await funcThree(file, doc, name)
} catch(e) {
return reject(e)
}
return resolve()
}
}
在递归函数中,我做了等待。
await callback(file, doc, files[p][1])
现在按预期等待。
谢谢!