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 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 (einschließlich wenn ein leeres iterierbares Objekt übergeben wird), mit einem Array von Objekten, die das Ergebnis jedes Versprechens 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
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 wird, 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 Versprechens imiterable
beschreiben, in der Reihenfolge des übergebenen Versprechens, unabhängig von der Abschlussreihenfolge. Jedes Ergebnisobjekt hat die folgenden Eigenschaften:status
-
Ein Zeichenfolgenwert, entweder
"fulfilled"
oder"rejected"
, der den endgültigen Zustand des Versprechens angibt. value
-
Nur vorhanden, wenn
status
"fulfilled"
ist. Der Wert, mit dem das Versprechen erfüllt wurde. reason
-
Nur vorhanden, wenn
status
"rejected"
ist. Der Grund, warum das Versprechen abgelehnt wurde.
Wenn das übergebene
iterable
nicht leer ist, aber keine ausstehenden Promises enthält, wird das zurückgegebene Promise dennoch asynchron (anstelle von synchron) erfüllt.
Beschreibung
Die Methode Promise.allSettled()
ist eine der Promise-Konkurrenz Methoden. Promise.allSettled()
wird typischerweise verwendet, wenn Sie mehrere asynchrone Aufgaben haben, die nicht voneinander abhängig sind, um erfolgreich abgeschlossen zu werden, oder wenn Sie immer das Ergebnis jedes Versprechens wissen möchten.
Im Vergleich dazu kann das Promise, das von Promise.all()
zurückgegeben wird, geeigneter sein, wenn die Aufgaben voneinander abhängig sind oder wenn Sie möchten, dass es bei Ablehnung eines von ihnen sofort ablehnt.
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 }
// ]
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-promise.allsettled |