当其中一个调用失败时,promise.all 如何处理多个 API 调用?

How does promise.all handle multiple API calls when one of them fails?

我有一个关于 promise.all 如何处理拒绝的问题。

假设我们有以下命令

await Promise.all([
  server1.logMessage(),
  server2.logMessage()
])

假设服务器 1 需要 2 秒来记录,服务器 2 需要 5 秒来记录。

如果 server1.logMessage() returns 在 1 秒内出现错误会发生什么。即使 promise.all 的结果承诺被拒绝,我们能否确定 server2 至少会记录消息?

或者我需要使用 Promise.allSettled 吗?

是的,你的承诺看起来是独立的。您的代码等同于:

const prom1 = server1.logMessage();
const prom2 = server2.logMessage();
await Promise.all([prom1, prom2])

Promise.all 所做的只是调整程序的流程 在那个块 - 它不会影响 logMessage 可能会或可能不会发生的事情做。如果一个 logMessage 碰巧记录了一条消息,或者它碰巧出错了,那将不会影响另一个 logMessage 所做的事情。