このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

AggregateError: No Promise in Promise.any was resolved

JavaScript の例外 "No Promise in Promise.any was resolved" は、Promise.any() に渡されたすべてのプロミスが拒否された場合に発生します。これは、AggregateError の唯一の組み込みでの使用例です。

エラーメッセージ

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

エラーの種類

AggregateError

エラーの原因

Promise.any() は、渡されたすべてのプロミスが拒否された場合にのみ拒否されます。拒否の理由の配列は errors から取得できます。非同期で拒否されたプロミスの扱い方については、プロミスの使用を参照してください。また、このエラーは 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) => {
    // いずれのフェッチも成功しなかった場合
    for (const e of error.errors) {
      console.error(e);
    }
  });

// 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);
    }
  }
}

関連情報