据我了解,在ES7 /ES2016中,将多个awaitin放在代码中的工作方式类似于.then()带有promise的链接,这意味着它们将一个接一个地执行而不是并行执行。因此,例如,我们有以下代码:
await
.then()
await someCall(); await anotherCall();
我是否正确理解anotherCall()仅在someCall()完成时才会调用?并行调用它们的最优雅方式是什么?
anotherCall()
someCall()
我想在Node中使用它,所以也许有一个异步库解决方案?
编辑:我对这个问题提供的解决方案不满意:减速是由于异步生成器中非并行等待Promise的缘故,因为它使用生成器,并且我询问的是更通用的用例。
您可以等待Promise.all():
Promise.all()
await Promise.all([someCall(), anotherCall()]);
要存储结果:
let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]);