Promise.allSettled()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.

Die Promise.allSettled() statische Methode nimmt ein iterierbares Objekt von Promises als Eingabe und gibt ein einzelnes Promise zurück. Dieses zurückgegebene Promise erfüllt sich, wenn alle Promises der Eingabe abgeschlossen sind (auch wenn ein leeres iterierbares Objekt übergeben wird), mit einem Array von Objekten, die das Ergebnis jeder Promise beschreiben.

Probieren Sie es aus

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) =>
  setTimeout(reject, 100, "foo"),
);
const promises = [promise1, promise2];

Promise.allSettled(promises).then((results) =>
  results.forEach((result) => console.log(result.status)),
);

// Expected output:
// "fulfilled"
// "rejected"

Syntax

js
Promise.allSettled(iterable)

Parameter

iterable

Ein iterierbares Objekt (wie ein Array) von Promises.

Rückgabewert

Ein Promise, das:

  • Bereits erfüllt ist, wenn das übergebene iterable leer ist.

  • Asynchron erfüllt ist, wenn alle Promises im gegebenen iterable abgeschlossen sind (entweder erfüllt oder abgelehnt). Der Erfüllungswert ist ein Array von Objekten, die das Ergebnis jeder Promise im iterable beschreiben, in der Reihenfolge der übergebenen Promises, unabhängig von der Abschlussreihenfolge. Jedes Ergebnisobjekt hat die folgenden Eigenschaften:

    status

    Ein String, entweder "fulfilled" oder "rejected", der den endgültigen Zustand der Promise angibt.

    value

    Nur vorhanden, wenn status "fulfilled" ist. Der Wert, mit dem die Promise erfüllt wurde.

    reason

    Nur vorhanden, wenn status "rejected" ist. Der Grund, warum die Promise abgelehnt wurde.

    Wenn das übergebene iterable nicht leer ist, aber keine ausstehenden Promises enthält, wird das zurückgegebene Promise dennoch asynchron (anstatt synchron) erfüllt.

Beschreibung

Die Methode Promise.allSettled() ist eine der Promise-Konkurrenzmethoden. Promise.allSettled() wird typischerweise verwendet, wenn Sie mehrere asynchrone Aufgaben haben, die nicht voneinander abhängig sind, erfolgreich abgeschlossen zu werden, oder wenn Sie immer das Ergebnis jeder Promise kennen möchten.

Im Vergleich dazu könnte das von Promise.all() zurückgegebene Promise besser geeignet sein, wenn die Aufgaben voneinander abhängig sind, oder wenn Sie möchten, dass eine Ablehnung einer Promise sofort alle weiteren ablehnt.

Beispiele

Verwendung von Promise.allSettled()

js
Promise.allSettled([
  Promise.resolve(33),
  new Promise((resolve) => setTimeout(() => resolve(66), 0)),
  99,
  Promise.reject(new Error("an error")),
]).then((values) => console.log(values));

// [
//   { status: 'fulfilled', value: 33 },
//   { status: 'fulfilled', value: 66 },
//   { status: 'fulfilled', value: 99 },
//   { status: 'rejected', reason: Error: an error }
// ]

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-promise.allsettled

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
allSettled()

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch