AggregateError: Kein Promise in Promise.any wurde erfüllt

Die JavaScript-Ausnahme "Kein Promise in Promise.any wurde erfüllt" tritt auf, wenn alle Promises, die an Promise.any() übergeben werden, abgelehnt werden. Dies ist die einzige eingebaute Anwendung von AggregateError.

Nachricht

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

Fehlertyp

Was ist schiefgelaufen?

Promise.any() lehnt nur ab, wenn alle Promises, die übergeben wurden, abgelehnt werden. Sie sollten auf errors zugreifen, um das Array mit den Ablehnungsgründen zu erhalten. Lesen Sie den Umgang mit Promises für weitere Informationen darüber, wie asynchron abgelehnte Promises behandelt werden. Dieser Fehler tritt auch auf, wenn Promise.any() ein leeres iterierbares Objekt erhält.

Beispiele

Leeres iterierbares Objekt

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