Der Promise-Konstruktor akzeptiert eine Executor-Funktion, die die Erfüllungslogik des Versprechens definiert. Es stellt sich eine Schlüsselfrage: Wird diese Executor-Funktion asynchron oder synchron ausgeführt?
Das Verhalten hängt von der Implementierung des Versprechens selbst ab. Der ES6-Standard für Versprechen besagt jedoch ausdrücklich, dass die Erfüllung eines Versprechens immer asynchron erfolgt.
Anhand der Spezifikation stellen wir fest, dass die Executor-Funktion (in unserem Fall die y-Funktion) ) wird tatsächlich synchron ausgeführt (siehe Schritt 10 der Spezifikation). Nachfolgende Aufrufe von .then() für das Versprechen, wie beispielsweise Promise.then(...), werden jedoch immer asynchron ausgeführt (siehe Schritt 8 des „PerformPromiseThen“-Algorithmus).
Diese asynchrone Natur von .then()-Aufrufen hat mehrere Auswirkungen:
Betrachten Sie den folgenden Codeausschnitt:
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
In diesem Beispiel wird die y-Funktion synchron ausgeführt. Der .then()-Handler wird jedoch asynchron ausgeführt, sobald die Ereignisschleife beendet ist. Die Ausgabe dieses Codes lautet:
Result Then handler executed after the synchronous execution of y
Das obige ist der detaillierte Inhalt vonIst die Executor-Funktion des Promise-Konstruktors synchron oder asynchron?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!