JavaScript/Objekte/Promise/withResolvers

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Methode Promise.withResolvers ist eine Alternative zum Aufruf des Promise-Konstruktors. Sie erzeugt ein neues Promise-Objekt ohne Executor und stellt das Promise sowie die erforderlichen resolve- und reject-Funktionen als Objekt bereit.

Syntax

   const promiseData = Promise.withResolvers();

Rückgabe

Das zurückgegebene Objekt enthält drei Eigenschaften:

promise
Das erzeugte Promise
resolve
die zum Promise passende resolve-Funktion
reject
die zum Promise passende reject-Funktion

Die Arbeitsweise der Funktion ist äquivalent zu dieser Ersatz-Implementierung:

Ersatzimplementierung von Promise.resolve
    let resolve, reject;
    const promise = new Promise( (good, bad) => {
        resolve = good;
        reject = bad;
    });

Dieses Muster taucht häufig in Bibliotheken auf (z.B. React oder Vue), weshalb eine Standardlösung beim TC39-Gremium angefragt wurde.[1] Im referenzierten TC39-Vorschlag finden sich noch weitere Argumente für den Bedarf an dieser Funktion.

Für Userland-Code sind die Anwendungsfälle seltener. Jedenfalls ist der Code mit withResolvers prägnanter und man kann die Variablen alle als const deklarieren:

Ersatzimplementierung von Promise.resolve
    const { promise, resolve, reject } = Promise.withResolvers();

Das Beispiel verwendet Destrukturierung, um die drei zurückgegebenen Werte auf const-Variablen zuzuweisen.

Wartefunktion aus dem Tutorial mit withResolvers()
function warte(zeit, ergebnis) {
    const { promise, resolve, reject } = Promise.withResolvers();
    if (zeit < 0)
       reject("Ungültige Wartezeit");
    else
       setTimeout(resolve, zeit*1000, ergebnis);
}

Siehe auch

Weblinks

  1. Github/TC39: [github.com/tc39/proposal-promise-with-resolvers Proposal zur Einführung von withResolvers], abgerufen am 27.08.2026