【发布时间】:2018-11-28 18:12:42
【问题描述】:
我正在使用 Promise,我需要知道异步方法处理的所有项目的结果。所以我认为 Promise.all() 会像这样解决我的问题:
const values = await Promise.all(items.map((item) => {
asyncMethodThatLogsAndReturnsBoolean(item);
}));
console.log(values);
我在这里发现的是,异步方法的一些日志是在值日志之后打印的。并且values 被打印为undefined 的数组。
这个实现有什么理由不等到所有的承诺都得到解决后才能用正确的数据打印值对象?
*asyncMethodThatLogsAndReturnsBoolean(item) 调用其他异步方法,但所有调用都有await。
【问题讨论】:
-
items.map(item => asyncMethodThatLogsAndReturnsBoolean(item))应该这样做。 -
考虑使用eslint.org/docs/rules/array-callback-return ESlint 规则来避免此类错误。
标签: node.js promise async-await