Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Javascript-Ereignisschleifenregeln

Detaillierte Erläuterung der Javascript-Ereignisschleifenregeln

DDD
DDDOriginal
2024-11-07 22:44:03671Durchsuche

Detailed explanation of Javascript event loop rules

Wie allgemein bekannt ist, ist Javascript eine Single-Thread-Sprache, aber warum können wir asynchrone Operationen verwenden? Weil asynchrone Vorgänge von einem Browser mit Multithread- und Multiprozessfähigkeiten ausgeführt werden. Javascript läuft durchgehend in einem einzelnen Thread und wird dem Browser zur Ausführung übergeben, wenn asynchroner Code entdeckt wird. Der Browser ruft dann den entsprechenden Thread oder Prozess auf, einschließlich HTTP-Anfrage, GUI, Ereignisauslösung usw., um diese asynchronen Operationen zu verarbeiten .

Im Allgemeinen können Javasctip-Aufgaben in drei Kategorien unterteilt werden: Synchronisierungsaufgabe, Mikroaufgabe und Makroaufgabe, die in der Reihenfolge der Synchronisierung ausgeführt werden -> Mikro -> Makro. Der Synchronisierungscode wird zuerst ausgeführt. Anschließend stellt der Browser den Mikrocode in eine Mikroaufgabenwarteschlange ein und wartet darauf, dass die Synchronisierungsaufgabe abgeschlossen wird. Außerdem stellt er den Makrocode in eine Makroaufgabenwarteschlange ein und wartet darauf, dass der Mikrocode abgeschlossen wird.
Diese Prioritätsreihenfolge ähnelt dem Planungsalgorithmus für Feedback-Warteschlangen auf mehreren Ebenen unter Betriebssystemen.

Allgemeine Mikroaufgabe: Promise.then(), Promise.catch(), new MutationObserver(), process.nextTick()
allgemeine Makroaufgabe: setTimeout, setInterview, requestAnimationFrame()

process.nextTick() ist übrigens weder eine Mikroaufgabe noch eine Makroaufgabe und wird einfach nach dem Synchronisierungscode und vor der Mikroaufgabe ausgeführt.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Javascript-Ereignisschleifenregeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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