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 entgegen und gibt ein einziges Promise
zurück. Dieses zurückgegebene Promise wird erfüllt, wenn alle in der Eingabe enthaltenen Promises abgeschlossen sind (einschließlich des Falls, in dem ein leeres iterierbares Objekt übergeben wird), mit einem Array von Objekten, die das Ergebnis jedes 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
Promise.allSettled(iterable)
Parameter
iterable
-
Ein iterierbares Objekt (wie etwa 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 Promise imiterable
beschreiben, in der Reihenfolge der übergebenen Promises, unabhängig von der Abschlussreihenfolge. Jedes Ergebnis-Objekt hat die folgenden Eigenschaften:status
-
Ein String, entweder
"fulfilled"
oder"rejected"
, der den endgültigen Zustand des Promises anzeigt. 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 Promise.allSettled()
-Methode ist eine der Promise-Konkurrenzmethoden. Promise.allSettled()
wird typischerweise verwendet, wenn Sie mehrere asynchrone Aufgaben haben, die nicht voneinander abhängen, um erfolgreich abgeschlossen zu werden, oder wenn Sie immer das Ergebnis jedes Promise wissen möchten.
Im Vergleich dazu könnte das von Promise.all()
zurückgegebene Promise angemessener sein, wenn die Aufgaben voneinander abhängig sind oder wenn Sie möchten, dass sofort abgelehnt wird, sobald eines der Promises abgelehnt wird.
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® 2025 Language Specification # sec-promise.allsettled |