Wie wir alle wissen, kann JavaScript-Code nur in einem Thread ausgeführt werden, d Im Code ist es wahrscheinlich, dass der Browser einfriert.
Warum ist JavaScript als Single-Threaded-Modell konzipiert?
Die Designer von Javascript glauben, dass die Komplexität des Programms erheblich zunimmt, wenn Javascript für Multithreading ausgelegt ist. Wenn es beispielsweise zwei Threads gibt, ist ein Thread für die Erstellung verantwortlich Eine Schaltfläche und ein anderer Thread. Diese Schaltfläche löschen. Aufgrund der Ungewissheit über die Reihenfolge der Multithread-Ausführung kann diese Schaltfläche auf der Seite angezeigt werden, was den Entwicklern große Probleme bereiten wird. Der Einfachheit halber wurde JavaScript daher von Anfang an als Single-Threaded-Modell konzipiert, was das Kernmerkmal von JavaScript darstellt.
Um die Single-Thread-Beschränkung von Javascript zu lösen, werden die Aufgaben im Javascript-Programm unterteilt in: synchrone Aufgaben und asynchrone Aufgaben
Synchronisierte Aufgaben: bezieht sich auf Aufgaben, die zur Ausführung in die Warteschlange gestellt werden und nicht von der JavaScript-Engine im Hauptthread angehalten werden. Die Ausführung der nächsten Aufgabe beginnt erst, nachdem die vorherige Aufgabe abgeschlossen ist.
Asynchrone Aufgaben: bezieht sich auf einige zeitaufwändige Aufgaben (z. B. E/A-Anfragen), die von der JavaScript-Engine in die Aufgabenwarteschlange gestellt werden, da sich diese Aufgaben nicht im Hauptthread befinden. Diese Aufgaben werden erst ausgeführt, wenn sie für den Hauptthread geplant sind (z. B. eine Rückruffunktion in Ajax).
Woher kommt also die Aufgabenwarteschlange?
Tatsächlich erstellt die JavaScript-Engine bei der Ausführung von JavaScript zusätzlich zum Hauptthread auch einige Aufgabenwarteschlangen, die einige asynchrone Aufgaben enthalten, die das aktuelle Programm verarbeiten muss, z. B. asynchrone Rückruffunktionen von Ajax. Funktionen in setTimeout und so weiter. Wenn alle Aufgaben im Hauptthread ausgeführt werden, prüft die Engine in jeder Aufgabenwarteschlange, ob Aufgaben vorhanden sind, die die Ausführungsbedingungen erfüllen. Wenn ja, wird sie zur Ausführung im Hauptthread eingeplant.
Das obige ist der detaillierte Inhalt vonPrinzip der asynchronen Javascript-Aufgabe (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!