据我了解,在 ES7/ES2016 中,在代码中放置多个 await
的工作方式类似于将 .then()
与 Promise 链接起来,这意味着它们将一个接一个地执行而不是并行执行。因此,例如,我们有以下代码:
await someCall();
await anotherCall();
我是否正确理解 anotherCall()
只有在 someCall()
完成时才会被调用?并行调用它们的最优雅方式是什么?
我想在 Node 中使用它,所以也许有异步库的解决方案?
编辑:我对这个问题中提供的解决方案不满意: Slowdown due to non-parallel waiting of promises in async generators ,因为它使用了生成器,我在问一个更一般的用例。
原文由 Victor Marchuk 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在
Promise.all()
上等待:存储结果:
请注意,
Promise.all
快速失败,这意味着一旦提供给它的承诺之一被拒绝,那么整个事情都会被拒绝。相反,如果您想等待所有的 promise 完成或拒绝,那么您可以使用
Promise.allSettled
。请注意,Internet Explorer 本身并不支持此方法。