Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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 object keine eigenen aufzählbaren Eigenschaften hat.

  • Asynchron erfüllt ist, wenn alle Promises im übergebenen object abgearbeitet sind (entweder erfüllt oder abgelehnt). Der Erfüllungswert ist ein Objekt, mit denselben Schlüsseln in derselben Reihenfolge wie das gegebene object, und der Wert jeder Eigenschaft ist ein Objekt, das das Ergebnis des entsprechenden Versprechens in object beschreibt, 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 object nicht 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.

js
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

Browser-Kompatibilität

Siehe auch