【问题标题】:Node await Promise.all() to be fully resolved节点等待 Promise.all() 被完全解决
【发布时间】: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

【问题讨论】:

标签: node.js promise async-await


【解决方案1】:

map里面的回调函数需要返回一个promise。

const values = await Promise.all(items.map((item) => {
  return asyncMethodThatLogsAndReturnsBoolean(item);
}));

否则,通过不显式返回任何内容,您只会返回 undefined,其中有 Promise.all 假设映射数组中的元素已成功“解析”为 undefined,这不是您想要的。

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 2018-10-01
    • 2021-08-02
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多