节点等待Promise.all()完全解决

Bel*_*len 1 node.js promise async-await

我正在使用promises,我需要知道异步方法处理的所有项目的结果。所以我认为Promise.all()可以解决我的问题,例如:

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

console.log(values);
Run Code Online (Sandbox Code Playgroud)

我在这里发现的是,在值日志之后会打印一些异步方法的日志。并且values被打印为的数组undefined

是否有任何原因为什么该实现不等到所有的承诺都解决后才能为值对象打印正确的数据?

* asyncMethodThatLogsAndReturnsBoolean(item)调用了其他异步方法,但是所有调用都有await

Sal*_*Sal 7

内部的回调函数map需要返回一个Promise。

const values = await Promise.all(items.map((item) => {
  return asyncMethodThatLogsAndReturnsBoolean(item);
}));
Run Code Online (Sandbox Code Playgroud)

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