Asynchrone Ausführung des Promise-Konstruktor-Rückrufs
Frage:
Im folgenden Codeausschnitt:
<code class="python">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y);</code>
Wird die y-Funktion asynchron oder synchron ausgeführt?
Antwort:
Die Ausführung des Promise-Konstruktor-Callbacks hängt von der spezifischen Implementierung ab der Promises/A-Spezifikation.
Die ES6-Spezifikation besagt in Abschnitt 25.4.3.1:
„Wenn Executor keine Ausnahme auslöst, wird das Promise-Objekt muss in zwei Schritten erstellt werden: „
Die Executor-Funktion muss mit drei Argumenten aufgerufen werden:
Die anschließende Ausführung von .then()-Aufrufen auf das Versprechen erfolgt jedoch immer asynchron. Dies geht aus Abschnitt 25.4.5.3.1 der ES6-Spezifikation hervor, in der der „PerformPromiseThen“-Algorithmus beschrieben wird:
„Wenn der Wert des internen [[PromiseState]]-Slots des Versprechens „erfüllt“ ist, ... "
"...Perform EnqueueJob("PromiseJobs", PromiseReactionJob, «fulfillReaction, value»)."
In ähnlicher Weise führt der Algorithmus eine asynchrone Job-Einreihung durch, wenn das Versprechen abgelehnt wird.
Fazit:
Daher wird die an den Promise-Konstruktor übergebene Funktion synchron ausgeführt, während nachfolgende .then()-Aufrufe gemäß der ES6-Spezifikation immer asynchron ausgeführt werden.
Das obige ist der detaillierte Inhalt vonWird der Promise-Konstruktor-Callback synchron oder asynchron ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!