AggregateError: Kein Promise in Promise.any wurde aufgelöst

Die JavaScript-Ausnahme "Kein Promise in Promise.any wurde aufgelöst" tritt auf, wenn alle Promises, die an Promise.any() übergeben wurden, abgelehnt werden. Es ist die einzige eingebaute Verwendung von AggregateError.

Meldung

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

Fehlertyp

Was ist schiefgelaufen?

Promise.any() schlägt nur fehl, wenn alle übergebenen Promises abgelehnt werden. Sie sollten auf errors zugreifen, um das Array der Ablehnungsgründe zu erhalten. Siehe Verwendung von Promises für weitere Informationen darüber, wie asynchron abgelehnte Promises behandelt werden. Dieser Fehler wird auch ausgelöst, wenn Promise.any() ein leeres Iterable erhält.

Beispiele

Leeres Iterable

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

Umgang mit allen Ablehnungen

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

Siehe auch