【发布时间】:2019-03-18 15:54:24
【问题描述】:
关于 async/await 在 javascript map 函数中的行为方式已经发布了相当多的主题,但是,下面两个示例中的详细说明会很好:
const resultsPromises = myArray.map(async number => {
return await getResult(number);
});
const resultsPromises = myArray.map(number => {
return getResult(number);
});
已编辑:这当然是一个虚构的案例,所以刚刚开始辩论,为什么、如何以及何时应该 map 函数等待 await 关键字。解决方案如何修改这个例子,调用 Promise.all() 不是这个问题的目的。getResult 是一个异步函数
【问题讨论】:
-
将此与
Promise.all结合起来。 -
@Alnitak 我同意这是一种气味,但是当我需要处理服务节流或有目的的、顺序的、异步的时,我会使用它。
-
@arielb - 不正确 -
async函数 总是 返回一个Promise,所以所发生的只是它正在等待解决getResult(),并且然后将其作为 newPromise. 的值传递 -
@TylerRoper 我相信你错了。
.map不会等待内部的await完成,所以效果是它们都会并行运行。 -
@marko424 这很简单 - 它没有。
标签: javascript asynchronous promise