Heim > Artikel > Web-Frontend > Ausführliche Erläuterung von Beispielen für die asynchrone Ausführung von Javascript und die Steuerung des Betriebsflusses
1. Die Ausführungsumgebung der Javascript-Sprache ist „Single Thread“:
Vorteile: Sie ist relativ einfach zu implementieren und die Ausführungsumgebung ist relativ einfach Es gibt eine Aufgabe. Es dauert lange und nachfolgende Aufgaben müssen in die Warteschlange gestellt werden, was die Ausführung des gesamten Programms verzögert. Das häufige Nicht-Reagieren des Browsers (Suspended Death) wird oft dadurch verursacht, dass ein bestimmter Teil des Javascript-Codes über einen längeren Zeitraum ausgeführt wird (z. B. eine Endlosschleife), was dazu führt, dass die gesamte Seite an dieser Stelle hängen bleibt und andere Aufgaben nicht ausgeführt werden können.
Um dieses Problem zu lösen, unterteilt die Javascript-Sprache den Aufgabenausführungsmodus in zwei Typen: synchron (synchron) und asynchron (asynchron).
2. Mehrere Methoden der „asynchronen Modus“-Programmierung:
(1) Rückruffunktion: Der Vorteil besteht darin, dass sie einfach, leicht zu verstehen und bereitzustellen ist, aber der Nachteil besteht darin, dass sie es ist Nicht förderlich für das Lesen und Verwalten des Codes. Jeder einzelne Teil ist aufgrund des hohen Kopplungsgrads unübersichtlich und der Prozess schwer zu verfolgen (insbesondere, wenn Rückruffunktionen verschachtelt sind). Für jede Aufgabe kann nur eine Rückruffunktion angegeben werden.
(2) Übernehmen Sie den ereignisgesteuerten Modus (Ereignisüberwachung): Der Vorteil besteht darin, dass er einfacher zu verstehen ist, mehrere Ereignisse binden kann, jedes Ereignis mehrere Rückruffunktionen angeben kann und „entkoppelt“ werden kann (Entkopplung). ), was der Modularisierung förderlich ist. Der Nachteil besteht darin, dass das gesamte Programm ereignisgesteuert werden muss und der laufende Prozess sehr unklar wird.
(3) Beobachtermuster (Publish-Subscribe-Muster): Die Art dieser Methode ähnelt dem „Event Listening“, ist aber offensichtlich besser als letzteres. Denn wir können den Betrieb des Programms überwachen, indem wir im „Message Center“ nachsehen, wie viele Signale vorhanden sind und wie viele Abonnenten jedes Signal hat.
3. Prozesssteuerung asynchroner Vorgänge.
(1) Serielle Ausführung: Schreiben Sie eine Prozesssteuerungsfunktion und lassen Sie sie asynchrone Aufgaben steuern. Nachdem eine Aufgabe abgeschlossen ist, wird eine andere ausgeführt.
Funktionsreihe ist eine serielle Funktion. Sie führt asynchrone Aufgaben nacheinander aus. Die letzte Funktion wird erst ausgeführt, wenn alle Aufgaben abgeschlossen sind. Das Items-Array speichert die Parameter jeder asynchronen Aufgabe und das Results-Array speichert die laufenden Ergebnisse jeder asynchronen Aufgabe.var items = [ 1, 2, 3, 4, 5, 6 ]; var results = []; function series(item) { if(item) { async( item, function(result) { results.push(result); return series(items.shift()); }); } else { return final(results); } } series(items.shift());
(2) Parallele Ausführung: Alle asynchronen Aufgaben werden gleichzeitig ausgeführt und die endgültige Funktion wird erst ausgeführt, wenn alle abgeschlossen sind.
Der Vorteil der parallelen Ausführung besteht darin, dass sie im Vergleich zur seriellen Ausführung, bei der jeweils nur eine Aufgabe ausgeführt werden kann, effizienter ist und Zeit spart. Das Problem besteht jedoch darin, dass es bei vielen parallelen Aufgaben leicht zu einer Erschöpfung der Systemressourcen und einer Verlangsamung der Betriebsgeschwindigkeit kommt. Daher gibt es eine dritte Methode der Prozesssteuerung.//forEach方法会同时发起6个异步任务,等到它们全部完成以后,才会执行final函数。 var items = [ 1, 2, 3, 4, 5, 6 ]; var results = []; items.forEach(function(item) { async(item, function(result){ results.push(result); if(results.length == items.length) { final(results); } }) });
(3) Kombination von parallel und seriell: Legen Sie einen Schwellenwert fest, und es können höchstens n asynchrone Aufgaben gleichzeitig parallel ausgeführt werden. Dadurch wird eine übermäßige Nutzung der Systemressourcen vermieden.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für die asynchrone Ausführung von Javascript und die Steuerung des Betriebsflusses. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!