AggregateError: No Promise in Promise.any was resolved

當傳遞給 Promise.any() 的所有 Promise 都被拒絕時,會發生 JavaScript 異常 "Promise.any 中沒有 Promise 被解決"。它是 AggregateError 唯一的內建用法。

訊息

AggregateError: All promises were rejected (V8-based)
AggregateError: No Promise in Promise.any was resolved (Firefox)
AggregateError (Safari)

錯誤型別

AggregateError

哪裡出錯了?

Promise.any() 僅在傳遞給它的所有 Promise 都被拒絕時才會被拒絕。您應該訪問 errors 來獲取拒絕原因陣列。有關如何處理非同步拒絕的 Promise 的更多資訊,請參閱 使用 Promise。當 Promise.any() 收到空的可迭代物件時,也會引發此錯誤。

示例

空的可迭代物件

js
Promise.any([]).catch((error) => {
  console.error(error); // AggregateError: No Promise in Promise.any was resolved
});

處理所有拒絕

js
const promises = [
  fetch("/data-location1"),
  fetch("/data-location1"),
  fetch("/data-location1"),
];

Promise.any(promises)
  .then((value) => console.log(value))
  .catch((error) => {
    // None of the fetches were successful
    for (const e of error.errors) {
      console.error(e);
    }
  });

// Using await
async function fetchFirstSuccessful() {
  try {
    const value = await Promise.any(promises);
    console.log(value);
  } catch (error) {
    for (const e of error.errors) {
      console.error(e);
    }
  }
}

另見