为什么数组中 forEach、Map 这样的方法中,不能使用 await 呢?
因为规范没有约定。 await for of 才提出
现在可以这样用:
const results = await Promise.all(dataList.map(x => { return asyncHandler(x); }));
或者用 https://github.com/sindresorhus/promise-fun
学习了
作用域问题。用 for..of
for..of
@atian25 好的,感谢
@alsotang 原始for也可以, 感谢
@varscc 一个并行一个串行
👍
await Promise.all(companyList.map(async value => { if(value.status === -2){ let companyID = value.companyID; let data = { companyID, Nlimit:1, Ncount:1 } let auditOpinion = await ctx.service.companyRecordService.findAll(data) if(auditOpinion.length !== 0 && auditOpinion[0].auditOpinion){ auditOpinion = auditOpinion[0].auditOpinion; value['auditOpinion'] = auditOpinion; } } return value }))
因为 forEach 每一次循环都创造了 async 函数, 瞬间生成了 array.length 个 async 函数,async 函数内 await 才是“阻塞”,所以成了并发。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
因为规范没有约定。 await for of 才提出
现在可以这样用:
或者用 https://github.com/sindresorhus/promise-fun
学习了
作用域问题。用
for..of@atian25 好的,感谢
@alsotang 原始for也可以, 感谢
@varscc 一个并行一个串行
👍
因为 forEach 每一次循环都创造了 async 函数, 瞬间生成了 array.length 个 async 函数,async 函数内 await 才是“阻塞”,所以成了并发。
👍