一尘不染

并行调用异步/等待功能

javascript

据我了解,在ES7 /ES2016中,将多个awaitin放在代码中的工作方式类似于.then()带有promise的链接,这意味着它们将一个接一个地执行而不是并行执行。因此,例如,我们有以下代码:

await someCall();
await anotherCall();

我是否正确理解anotherCall()仅在someCall()完成时才会调用?并行调用它们的最优雅方式是什么?

我想在Node中使用它,所以也许有一个异步库解决方案?

编辑:我对这个问题提供的解决方案不满意:减速是由于异步生成器中非并行等待Promise的缘故,因为它使用生成器,并且我询问的是更通用的用例。


阅读 269

收藏
2020-04-25

共1个答案

一尘不染

您可以等待Promise.all()

await Promise.all([someCall(), anotherCall()]);

要存储结果:

let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]);
2020-04-25