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:
1 2 3 4 5 6 7 8 9 |
|
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:
1 2 |
|
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!