等待async.each通过等待完成,然后再继续



我正在等待async.eachLimit完成后再继续。

我的代码:

await async.eachLimit(myList, async (item)=>{
await processItem(item)
})
console.log("all done");

但我总是在处理完所有事情之前就把"全部做完"。我做错了什么?

我最终解决了这个问题:

await new Promise( (resolve, reject)=>{
async.eachLimit(myList, async (item)=>{
await processItem(item)
}, (err)=> {
if(err) reject(err)
else resolve()
})

问题是,由于某种原因,async.eachLimit没有返回一个不可用的承诺。

您可以尝试Promise.all(),它返回一个promise,该promise只有在列表中的所有promise都已解析时才能解析。

await Promise.all(myList);
console.log("done");

也许您可以根据自己的需要进行调整(使用1000而不是Math.rrandom…来更快地运行示例(。

const test = async () => {
const list = [ 1, 2, 3 ]
const testFunc = async (item) => {
return new Promise( ( res, rej ) => {
setTimeout( () => {
console.log(item)
res( true )
}, 1000)
} )
}
await Promise.all( list.map( async ( item ) => {
await testFunc( item )
} ) )
console.log("all done")
}
test()

相关内容

  • 没有找到相关文章