Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die Promise.resolve() statische Methode "löst" einen gegebenen Wert in ein Promise auf. Wenn der Wert ein Promise ist, wird dieses Promise zurückgegeben; wenn der Wert ein thenable ist, wird Promise.resolve() die then()-Methode mit zwei vorbereiteten Rückrufmethoden aufrufen; andernfalls wird das zurückgegebene Promise mit dem Wert erfüllt.
Diese Funktion reduziert verschachtelte Ebenen von promise-ähnlichen Objekten (z. B. ein Promise, das zu einem Promise erfüllt wird, das zu etwas erfüllt wird) auf eine einzelne Ebene — ein Promise, das zu einem nicht-thenable Wert erfüllt wird.
Argument, das von diesem Promise aufgelöst werden soll. Kann auch ein Promise oder ein thenable sein, das aufgelöst werden soll.
Ein Promise, das mit dem gegebenen Wert aufgelöst wird oder das Promise, das als Wert übergeben wurde, wenn der Wert ein Promise-Objekt war. Ein aufgelöstes Promise kann in jedem der Zustände sein — erfüllt, abgelehnt oder ausstehend. Zum Beispiel wird das Auflösen eines abgelehnten Promises immer noch zu einem abgelehnten Promise führen.
Promise.resolve() löst ein Promise auf, was nicht dasselbe ist wie das Erfüllen oder Ablehnen des Promises. Weitere Definitionen der Terminologie finden Sie in der Beschreibung von Promise. Kurz gesagt gibt Promise.resolve() ein Promise zurück, dessen endgültiger Zustand von einem anderen Promise, thenable Objekt oder einem anderen Wert abhängt.
Hinweis: Wenn die Auswertung des value-Ausdrucks möglicherweise synchron einen Fehler auslöst, wird dieser Fehler von Promise.resolve() nicht abgefangen und in ein abgelehntes Promise eingebettet. Ziehen Sie in diesem Fall in Betracht, Promise.try(() => value) zu verwenden.
Promise.resolve() ist generisch und unterstützt die Unterklassenbildung, was bedeutet, dass es auf Unterklassen von Promise aufgerufen werden kann und das Ergebnis ein Promise des Unterklassentyps sein wird. Hierfür muss der Konstruktor der Unterklasse die gleiche Signatur wie der Promise()-Konstruktor implementieren — das Akzeptieren einer einzelnen executor-Funktion, die mit den resolve- und reject-Rückrufen als Parameter aufgerufen werden kann.
Promise.resolve() behandelt native Promise-Instanzen speziell. Wenn value zu Promise oder einer Unterklasse gehört und value.constructor === Promise, wird value direkt von Promise.resolve() zurückgegeben, ohne eine neue Promise-Instanz zu erstellen. Andernfalls ist Promise.resolve() im Wesentlichen eine Kurzform für new Promise((resolve) => resolve(value)).
Der Großteil der Auflösungslogik wird tatsächlich von der der resolve-Funktion implementiert, die vom Promise()-Konstruktor übergeben wird. Zusammengefasst:
Promise.resolve() verwendet bestehende Promise-Instanzen wieder. Wenn es ein natives Promise auflöst, wird die gleiche Promise-Instanz zurückgegeben, ohne einen Wrapper zu erstellen.
Die umgekehrte Reihenfolge der Protokolle liegt daran, dass die then-Handler asynchron aufgerufen werden. Weitere Informationen finden Sie in der then()-Referenz.
Verschachtelte thenables werden "tief abgeflacht" zu einem einzigen Promise.
Warnung: Rufen Sie Promise.resolve() nicht auf einem thenable auf, das sich selbst auflöst. Dies führt zu einer Endlosschleife, da versucht wird, ein unendlich verschachteltes Promise abzuflachen.
Promise.resolve() ist eine generische Methode. Sie kann bei jedem Konstruktor aufgerufen werden, der die gleiche Signatur wie der Promise()-Konstruktor implementiert. Zum Beispiel können wir sie bei einem Konstruktor aufrufen, der console.log als resolve übergibt:
Die Fähigkeit, verschachtelte thenables abzuflachen, wird von der resolve-Funktion des Promise()-Konstruktors implementiert. Wenn Sie sie bei einem anderen Konstruktor aufrufen, werden verschachtelte thenables möglicherweise nicht abgeflacht, je nachdem, wie dieser Konstruktor seine resolve-Funktion implementiert.
| ECMAScript® 2027 Language Specification # sec-promise.resolve |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.