如何解决Promise.all不等待完成内部Promise.all完成
dissectors
我得到的输出如下所示,
- 信息
- 信息
- 循环完成
- 承诺已解决
- 下一步
- UpdatedInfo
- 完成循环
- 下一步
- UpdatedInfo
它应该给出这样的输出,
- 信息
- 循环完成
- 已解决的承诺:10
- 下一步
- UpdatedInfo
- 信息
- 循环完成
- 承诺解决:10
- 下一步
- UpdatedInfo
解决方法
使用.map(async (e) => {...})
时,所有功能都同时开始执行。 await Promise.all(arr.map(async (e) => {...}))
等待所有 完成,但是仍然是并行的。
您要使它们顺序排列。您可以使用for循环:
for (let info of obj) {
console.log('info',JSON.stringify(info));
for (let index = 0 ; index < info.Address.length; index++) {
let items = info.Address[index];
console.log('ParentItems IsParentLossCapability',);
let pr = await firstFunction();
console.log('promise resolved: ' + pr)
console.log('next step');
}
console.log('UpdatedInfo',JSON.stringify(obj));
}
或使用异步缩减:
await obj.reduce(async (memo,info) => {
await memo;
console.log('info',JSON.stringify(info));
await info.Address.reduce(async (memo2,items,index) => {
await memo2;
console.log('ParentItems IsParentLossCapability',);
let pr = await firstFunction();
console.log('promise resolved: ' + pr)
console.log('next step');
}),Promise.resolve());
console.log('UpdatedInfo',JSON.stringify(obj));
},Promise.resolve());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。