Promise.allSettledKeyed()
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Promise.allSettledKeyed() statische Methode ähnelt Promise.allSettled(), außer dass sie anstelle von Arrays/Iterables als Input/Output Objekte verwendet. Sie akzeptiert ein Objekt, bei dem jeder eigene Schlüssel mit einem Promise verknüpft ist, und gibt ein einziges Promise zurück. Dieses zurückgegebene Promise wird erfüllt, wenn alle Promises des Inputs abgeschlossen sind, mit einem Objekt der gleichen Schlüssel, die auf Objekte abgebildet sind, die das Ergebnis des jeweiligen Promise beschreiben.
Im Vergleich zu Promise.allSettled() ermöglicht Promise.allSettledKeyed() Ihnen, Ergebnisse mit semantisch sinnvollen Schlüsseln zu verknüpfen, anstatt mit einer beliebigen Array-Reihenfolge, die schwer zu pflegen sein kann.
Syntax
Promise.allSettledKeyed(object)
Parameter
object-
Ein Objekt. Alle seine eigenen aufzählbaren Eigenschaften, egal ob der Schlüssel ein String oder ein Symbol ist, sollten
Promise-Werte haben. Diese Werte werden abgewartet, so dass auch andere Thenables aufgelöst werden, während Nicht-Thenables unverändert zurückgegeben werden.
Rückgabewert
Ein Promise, das:
-
Bereits erfüllt ist, wenn das übergebene
objectkeine eigenen aufzählbaren Eigenschaften hat. -
Asynchron erfüllt ist, wenn alle Promises im gegebenen
objectabgeschlossen sind (entweder erfüllt oder abgelehnt). Der Erfüllungswert ist ein Objekt mit den gleichen Schlüsseln und in derselben Reihenfolge wie das gegebeneobject, und der Wert jeder Eigenschaft ist ein Objekt, das das Ergebnis des entsprechenden Promise inobjectbeschreibt, unabhängig von der Abschlussreihenfolge. Jedes Ergebnisobjekt hat die folgenden Eigenschaften:status-
Ein String, entweder
"fulfilled"oder"rejected", der den endgültigen Zustand des Promise 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
objectnicht leer ist, aber keine ausstehenden Promises enthält, wird das zurückgegebene Promise trotzdem asynchron (anstatt synchron) erfüllt.
Beschreibung
Die Promise.allSettledKeyed()-Methode ist eine der Methoden für Promise-Konkurrenz. Sie führt die gleiche Art von Aufgabe aus wie Promise.allSettled(). Promise.allSettledKeyed() wird bevorzugt, wenn Sie nicht bereits ein Array von Promises haben und/oder Sie die Ergebnisse sofort destrukturieren; siehe Promise.allKeyed() für eine genauere Beschreibung.
Beispiele
>Verwendung von Promise.allSettledKeyed()
Die Promise.allSettledKeyed()-Methode nimmt ein Objekt und verarbeitet alle seine eigenen aufzählbaren Eigenschaften.
function delayed(value, timeout) {
return new Promise((res) => setTimeout(() => res(value), timeout));
}
const sym = Symbol();
const promises = {
a: delayed("a", 500),
// Symbol properties are processed
[sym]: delayed("symbol", 300),
// Nested properties are not processed; this whole object is treated as
// an already-resolved value and returned as-is
nested: {
b: delayed("b", 100),
},
};
const result = await Promise.allSettledKeyed(promises);
console.log(result);
// {
// a: { status: "fulfilled", value: "a" },
// [sym]: { status: "fulfilled", value: "symbol" },
// nested: {
// b: <Promise>,
// },
// }
Für mehr Beispiele, die sich auf das Konkurrenzverhalten beziehen, das Promise.allSettled() und Promise.allSettledKeyed() gemeinsam haben, siehe Promise.allSettled().
Spezifikationen
| Spezifikation |
|---|
| Await Dictionary> # sec-promise.allsettledkeyed> |