Heim > Web-Frontend > js-Tutorial > Hauptteil

Was ist die Ausführungsreihenfolge von Promise-Handlern in JavaScript?

Susan Sarandon
Freigeben: 2024-10-24 17:42:02
Original
723 Leute haben es durchsucht

What is the Execution Order of Promise Handlers in JavaScript?

Verstehen der Ausführungsreihenfolge von Versprechen

In JavaScript werden Versprechen verwendet, um asynchrone Vorgänge abzuwickeln. Die Ausführungsreihenfolge von Promise-Handlern kann verwirrend sein, insbesondere wenn es verschachtelte Promises gibt.

Zeilenweise Analyse des Codes

Lassen Sie uns die bereitgestellte Codezeile analysieren nach Zeile, um die Ausführungsreihenfolge zu verstehen:

1. Promise.resolve('A')
  .then(function(a){console.log(2, a); return 'B';})
  .then(function(a){
    Promise.resolve('C')
      .then(function(a){console.log(7, a);})
      .then(function(a){console.log(8, a);});
    console.log(3, a);
    return 'B';})
  .then(function(a){
    Promise.resolve('D')
      .then(function(a){console.log(9, a);})
      .then(function(a){console.log(10, a);});
    console.log(4, a);})
  .then(function(a){
    console.log(5, a);});
Nach dem Login kopieren
  • Zeile 1: Erstellt ein Versprechen, das sofort in „A“ aufgelöst wird, und hängt einen .then()-Handler daran an.
  • Zeile 2: Konsole protokolliert „2“, wenn das Versprechen mit „A“ aufgelöst wird, und gibt „B“ zurück.
  • Zeile 5: Noch eine Der .then()-Handler wird dem in Zeile 1 erstellten Versprechen hinzugefügt.
  • Zeile 6-8: Erstellt ein neues Versprechen, das in „C“ aufgelöst wird und zwei .then()-Handler anhängt dass die Konsole jeweils „7“ und „8“ protokolliert.
  • Zeile 10: Konsole protokolliert „3“ und gibt „B“ zurück.
  • Zeile 12- 14: Ein weiterer .then()-Handler wird dem in Zeile 5 erstellten Versprechen hinzugefügt.
  • Zeile 15-17: Erstellt ein neues Versprechen, das in „D“ aufgelöst und angehängt wird zwei .then()-Handler, die jeweils „9“ und „10“ in der Konsole protokollieren.
  • Zeile 19:Konsole protokolliert „4“.
  • Zeile 22 -24:Ein weiterer .then()-Handler wird dem in Zeile 12 erstellten Versprechen hinzugefügt.
  • Zeile 27:Konsole protokolliert „5“, wenn das Versprechen aufgelöst wird.

Ausführungsreihenfolge

  1. Zeile 1: Versprechen gelöst, Konsolenprotokolle „2 A“
  2. Zeile 10: Konsolenprotokolle „3 B“
  3. Zeile 19: Konsolenprotokolle „4 B“
  4. Zeile 27: Konsolenprotokolle „5 undefiniert“
  5. Zeile 7: Konsolenprotokolle „7 C“
  6. Zeile 8: Konsolenprotokolle „8 undefiniert“
  7. Zeile 15:Konsolenprotokolle „9 D“
  8. Zeile 17:Konsolenprotokolle „10 undefiniert“
  9. Zeile 30: Konsolenprotokolle „1“
  10. Zeile 33:Konsolenprotokolle „6“

Diskussion

  • Promise-Handler werden asynchron geplant, sodass sie ausgeführt werden, nachdem der aktuelle Ausführungsthread abgeschlossen ist.
  • Verschachtelte Promise-Ketten erstellen unabhängige Promise-Ketten, die keine vorgegebene Ausführungsreihenfolge haben.
  • Die Reihenfolge von Die Ausführung von Versprechen hängt von der Implementierung der Versprechen-Engine ab. In diesem Fall plant die verwendete Engine Mikroaufgaben (Promise-Handler) vor Makroaufgaben (setTimeout()).
  • Es wird nicht empfohlen, sich bei verschachtelten Versprechen auf eine bestimmte Ausführungsreihenfolge zu verlassen. Stattdessen verspricht die Kette ausdrücklich, ihre Ausführungsreihenfolge zu kontrollieren.

Das obige ist der detaillierte Inhalt vonWas ist die Ausführungsreihenfolge von Promise-Handlern in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!