Ereignisschleife in jsDa JavaScript ein Single-Thread ist, kann dasselbe Ereignis nur eine Methode ausführen. Daher werden die Methoden im Programm dem Ausführungsstapel hinzugefügt und in der Reihenfolge „Last-In-First-Out“ ausgeführt. Wenn eine asynchrone Aufgabe auftritt, wird sie nicht blockiert, sondern die Aufgabe wird in die Ereigniswarteschlange gestellt und der synchrone Code im Ausführungsstapel wird weiterhin ausgeführt. Wenn alle Aufgaben im aktuellen Ausführungsstapel ausgeführt wurden, wird die Aufgabe in der Ereigniswarteschlange durchsucht und die Rückruffunktion der Aufgabe wird in den Ausführungsstapel gestellt, um den synchronen Code darin auszuführen. Dieser wiederholte Zyklus wird als Ereignisschleife bezeichnet. node.jsFunktionen von Node.jsEreignisgesteuertFühren Sie den Code von oben nach unten aus und fügen Sie ihn der Ereigniswarteschlange hinzu, wenn ein Rückruf erforderlich ist. Wenn der Hauptthread fertig ist, führen Sie den Rückruf in der Ereigniswarteschlange aus. Der gesamte Prozess blockiert weder neue Ereignisse, noch muss er bereits etablierte Ereignisse aufrechterhalten. Nicht blockierende ioWenn der Hauptthread im Leerlauf ist, beginnt er, die Ereigniswarteschlange zu durchlaufen und die Ereignisse in der Ereigniswarteschlange zu verarbeiten. Wenn das Ereignis keine IO-Aufgabe ist, wird es von selbst verarbeitet. Wenn es sich um eine IO-Aufgabe handelt, wird sie zur Verarbeitung an den Threadpool übergeben und eine Rückruffunktion wird angegeben. Anschließend werden andere Ereignisse in der Schleifenwarteschlange fortgesetzt. Wenn der Blockierungsvorgang abgeschlossen ist, werden das Ergebnis und die Rückruffunktion in die Warteschlange gestellt und die Rückruffunktion wird ausgeführt, wenn der Hauptthread eine Schleife durchläuft. Vor- und Nachteile von Node.jsVorteil
Mangel:
Anwendbare Szenarien:
Node.js-EreignisschleifeDie Knotenereignisschleife basiert auf der Libuv-Engine. Nachdem v8 den JS-Code interpretiert hat, ruft es die entsprechende Knoten-API auf. Diese APIs werden von der Libuv-Engine gesteuert, um entsprechende Aufgaben auszuführen und verschiedene Ereignisse in verschiedene Warteschlangen zu stellen, die auf die Ausführung durch den Hauptthread warten. Daher existiert die Knotenereignisschleife in der Libuv-Engine. libuv-Engine: Implementiert Ereignisschleifen, Dateivorgänge usw. und ist der Kern von node.js zur Erzielung asynchroner Der einzelne Thread von node.js bedeutet nur, dass JavaScript in einem einzelnen Thread ausgeführt wird und E/A-Vorgänge intern über den Thread-Pool abgeschlossen werden können. Polling (Abfragephase) ---》Prüfen (Prüfphase) ---》Close-Callback (Phase des Ereignisrückrufs schließen) ---》Timer (Phase der Timererkennung) ---》E/A-Rückrufphase ---》Leerlaufphase ---》Polling-Phase Umfragephase (Umfragephase): V8 analysiert den JS-Code und übergibt ihn an die Libuv-Engine. Anschließend tritt die Schleife zuerst in die Polling-Phase ein. Überprüfen Sie zunächst, ob sich ein Ereignis in der Polling-Warteschlange befindet. Führen Sie den Rückruf in der Reihenfolge „First-In-First-Out“ aus, falls dies der Fall ist. Dies ist das Ende dieses Artikels über die Fallstudie zu JavaScript-Ereignisschleifen. Weitere Informationen zu JavaScript-Ereignisschleifen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux
>>: Eine einfache Methode zum regelmäßigen Löschen abgelaufener Datensätze in MySQL
1. Funktion Wird hauptsächlich verwendet, um den ...
In diesem Artikel werden 3 Methoden beschrieben, ...
Inhaltsverzeichnis 1. Benutzerdefinierter Import ...
Experimentelle Umgebung • Eine minimal installier...
Vorwort Dieser Artikel stellt hauptsächlich den r...
Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...
Inhaltsverzeichnis 1. Variablenübersicht 1.1 Spei...
In diesem Artikel wird das MySQL-Sicherungsskript...
Dieser Artikel beschreibt einen Vorschlag für ein...
Inhaltsverzeichnis Vorwort Ressourcen zum Thema V...
1. Mycat-Anwendungsszenarien Mycat wurde für eine...
Machen Sie sich anhand von Beispielen mit der Bede...
Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...
Inhaltsverzeichnis 1. MySQL-Trigger erstellen: 1....
Vorwort Da ich während des Lernprozesses Zookeepe...