Promise.allSettledKeyed()
Die Promise.allSettledKeyed()-Methode ähnelt Promise.allSettled(), außer dass sie statt Arrays/Iterables als Eingabe/Ausgabe Objekte verwendet. Sie nimmt ein Objekt, bei dem jeder eigene Schlüssel mit einem Promise verknüpft ist, und gibt ein einzelnes Promise zurück. Dieses zurückgegebene Promise wird erfüllt, wenn alle Promises der Eingabe abgearbeitet sind, mit einem Objekt, das dieselben Schlüssel enthält, abgebildet auf Objekte, die das Ergebnis des entsprechenden Promises beschreiben.
Im Vergleich zu Promise.allSettled() ermöglicht Promise.allSettledKeyed() das Zuweisen von Ergebnissen zu semantisch sinnvollen Schlüsseln, anstatt willkürlicher Array-Reihenfolge, die schwer zu pflegen sein kann.
Syntax
Promise.allSettledKeyed(object)
Parameter
object-
Ein Objekt. Alle seine eigenen aufzählbaren Eigenschaften, unabhängig davon, ob der Schlüssel ein String oder ein Symbol ist, sollten
Promise-Werte haben. Diese Werte werden await-ed, sodass 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 übergebenen
objectabgearbeitet sind (entweder erfüllt oder abgelehnt). Der Erfüllungswert ist ein Objekt, mit denselben Schlüsseln in derselben Reihenfolge wie das gegebeneobject, und der Wert jeder Eigenschaft ist ein Objekt, das das Ergebnis des entsprechenden Versprechens inobjectbeschreibt, 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 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
objectnicht leer ist, aber keine ausstehenden Versprechungen enthält, wird das zurückgegebene Versprechen dennoch asynchron (anstelle von synchron) erfüllt.
Beschreibung
Die Promise.allSettledKeyed()-Methode ist eine der Konkurrenzmethoden für Versprechungen. Sie erfüllt denselben Zweck 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 weitere 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>,
// },
// }
Weitere Beispiele zum Konkurrenzverhalten, das Promise.allSettled() und Promise.allSettledKeyed() gemeinsam haben, finden Sie unter Promise.allSettled().
Spezifikationen
| Spezifikation |
|---|
| Await Dictionary> # sec-promise.allsettledkeyed> |