Start · Sprachen · JavaScript · Referenz · Promise.allSettled()

Promise.allSettled()

Methode

<code>Promise.allSettled()</code> gibt ein Promise zurück, das erfüllt wird, wenn alle Eingabe-Promises abgeschlossen sind (erfüllt oder abgelehnt).

Kategorie: method-property

Signatur

Promise.allSettled(iterable)

Beschreibung

Die statische Methode Promise.allSettled() nimmt ein iterable von Promises als Eingabe entgegen und gibt ein einzelnes Promise zurück. Dieses zurückgegebene Promise wird erfüllt, wenn alle Promises der Eingabe abgeschlossen sind (settled) – auch wenn ein leeres iterable übergeben wird – mit einem Array von Objekten, welche das Ergebnis jedes einzelnen Promise beschreiben.

Die Methode Promise.allSettled() ist eine der Methoden zur Promise-Nebenläufigkeit (promise concurrency). Promise.allSettled() wird typischerweise verwendet, wenn Sie mehrere asynchrone Aufgaben haben, die nicht voneinander abhängen, um erfolgreich abzuschließen, oder wenn Sie immer das Ergebnis jedes Promise wissen möchten.

Im Vergleich dazu kann das von Promise.all() zurückgegebene Promise besser geeignet sein, wenn die Aufgaben voneinander abhängen oder wenn Sie sofort ablehnen möchten, sobald eines von ihnen abgelehnt wird.

Parameter

Name Typ Default Beschreibung
$iterable Pflicht Iterable Ein iterable (etwa ein Array) von Promises. Diese Werte werden mit await behandelt, sodass andere thenables ebenfalls aufgelöst werden, während Nicht-thenables so wie sie sind zurückgegeben werden.

Rückgabewert

Typ
Promise
Beschreibung
Ein Promise, das entweder bereits erfüllt ist, wenn das übergebene iterable leer ist, oder asynchron erfüllt wird, sobald alle Promises im übergebenen iterable abgeschlossen sind (entweder erfüllt oder abgelehnt). Der Erfüllungswert ist ein Array von Objekten, die jeweils das Ergebnis eines Promise aus dem iterable beschreiben – in der Reihenfolge der übergebenen Promises, unabhängig von der Reihenfolge des Abschlusses. Jedes Ergebnisobjekt besitzt die Eigenschaften status (Zeichenkette "fulfilled" oder "rejected"), value (nur bei "fulfilled": der Erfüllungswert) und reason (nur bei "rejected": der Ablehnungsgrund). Wenn das übergebene iterable nicht leer ist, aber keine ausstehenden Promises enthält, wird das zurückgegebene Promise dennoch asynchron (statt synchron) erfüllt.

Beispiele

Verwendung von Promise.allSettled()

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 }
// ]

Destrukturierung der Ergebnisse

const [status1, status2] = Promise.allSettled([
  Promise.resolve(33),
  new Promise((resolve) => setTimeout(() => resolve(66), 0)),
]);

// status1 = { status: 'fulfilled', value: 33 }
// status2 = { status: 'fulfilled', value: 66 }