Ich habe diesen Artikel gelesen und mich gefragt, warum in der erstes snippet das seconde wait()
wartet auf das erste wait()
, um fertig zu werden, während im seconda snippet zwei wait()
async laufen?
In Ihrer ersten Funktion:
%Vor% Du sagst JS, dass er das erste wait
abwarten soll, sobald es gestartet wird.
Dies bedeutet, dass der zweite wait(500)
nicht starten kann, bevor der erste beendet ist:
wait(500) // 1
wait(500) // 2
In der zweiten Funktion:
%Vor% Beide Aufrufe von wait
werden gestartet , bevor der Code angewiesen wird, auf die Ergebnisse zu warten.
wait(500) // 1
wait(500) // 2
wait1
übergeben wurde, wait2
übergeben wurde Da wait1
und wait2
unmittelbar hintereinander ausgelöst werden, laufen sie praktisch parallel.
Stellen Sie sich folgendes vor:
Wenn 2 Personen gleichzeitig eine Stoppuhr starten, müssen Sie warten, bevor jede Stoppuhr 10 Sekunden erreicht. Sie müssen immer noch nur 10 Sekunden warten.
In der Funktion series
hingegen kann die zweite Stoppuhr nicht starten, bevor die erste beendet ist.
Es hängt von asynchronen Aufgaben ab, wenn zwei Aufgaben abhängig sind, die wir ausführen müssen. I.e. warte bis die erste Aufgabe abgeschlossen ist; Die gleiche Sache passiert im ersten Snippet, deshalb dauert es ungefähr 1000ms, um abzuschließen.
Aber wenn zwei Aufgaben unabhängig sind, können wir sie parallel ausführen und diese Aufgaben vor der abhängigen Aufgabe erwarten. I.e. Im Falle eines zweiten Snippets können wir das Ergebnis beider Aufgaben benötigen und dann diese Ergebnisse manipulieren. Deshalb warten wir vor der Rückkehrerklärung.
Es ist ähnlich wie C # async-erwarten Mechanismus. Als Referenz besuchen Sie bitte Asynchrone Programmierung mit async und erwarten
Tags und Links javascript