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 statische Methode Promise.allSettled() nimmt ein Iterable 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 Iterable übergeben wird), mit einem Array von Objekten, die das Ergebnis jedes Promises beschreiben.

Probieren Sie es aus

Syntax

js
Promise.allSettled(iterable)

Parameter

iterable

Ein iterable (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 eines jeden Promises im iterable beschreiben, in der Reihenfolge der übergebenen Promises, unabhängig von der Reihenfolge der Fertigstellung. Jedes Ergebnisobjekt hat die folgenden Eigenschaften:

    status

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

    value

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

    reason

    Nur vorhanden, wenn status "rejected" ist. Der Grund, warum das 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() gehört zu den Methoden der Promise-Konkurrenz. Promise.allSettled() wird typischerweise verwendet, wenn Sie mehrere asynchrone Aufgaben haben, die nicht darauf angewiesen sind, dass die anderen erfolgreich abgeschlossen werden, oder wenn Sie immer das Ergebnis jedes Promises wissen möchten.

Zum Vergleich: Das von Promise.all() zurückgegebene Promise könnte geeigneter sein, wenn die Aufgaben voneinander abhängen oder wenn Sie möchten, dass bei Ablehnung eines Promises sofort eine Ablehnung erfolgt.

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 Language Specification
# sec-promise.allsettled

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch