Heim  >  Artikel  >  Web-Frontend  >  Verstehen Sie die Ereignisschleife von Node in einem Artikel

Verstehen Sie die Ereignisschleife von Node in einem Artikel

青灯夜游
青灯夜游nach vorne
2023-04-06 18:39:262556Durchsuche

In diesem Artikel geht es um die Ereignisschleife in Nodejs. Ich hoffe, dass er jedem hilft, die Ereignisschleife in Nodejs zu verstehen. Von nun an werden Sie keine Angst mehr vor der Frage des Interviewers haben: Sprechen Sie über die Ereignisschleife in Nodejs!

Verstehen Sie die Ereignisschleife von Node in einem Artikel

Ich denke, jeder wird während des Interviews vom Interviewer gefragt: „Erzählen Sie mir etwas über die Ereignisschleife von Nodejs.“

Weil mir diese Frage auch gestellt wurde, aber jedes Mal ist es mir peinlich.

Es gibt viele Einführungen in verschiedenen technischen Blogs zu diesem Thema, aber ich habe es nie verstanden. Denn diese Artikel beginnen oft mit vielen Diagrammen und Fachbegriffen, was den Mut zum Verstehen sofort erstickt. [Empfohlene verwandte Tutorials: nodejs-Video-Tutorial, Programmierunterricht]

Aber ich konnte es nicht verstehen, der Interviewer fragte trotzdem, also habe ich mit Tränen und zusammengebissenen Zähnen einige Tutorials konsultiert und mir die Zusammenfassung besorgt wird umgehend mit allen geteilt.

1. Was ist die Ereignisschleife?

Mit einem Wort: Die Ereignisschleife ist der Mechanismus für Nodejs, um asynchrone Vorgänge abzuwickeln.

Js ist Single-Threaded. Warum kann Nodejs asynchrone Vorgänge verarbeiten?

Weil Nodejs Multithread-Operationen an den Systemkern übergibt.

Bild oben:

Nodejs ist wie ein intelligentes Kind. Es kann keine Multithread-Operationen basierend auf Js selbst implementieren, aber es wirft Multithread-Operationen an den Systemkern.

Da die meisten Systemkerne Multithread-fähig sind und der Kernel nicht so einfach auszuführen ist, können sich Nodejs dann zurücklehnen und entspannen?

2. Warum brauchen wir eine Ereignisschleife?

(Erklären Sie zunächst den Namen der Ereignisschleife. Nodejs ist ereignisgesteuert. Wann und wann etwas getan werden soll, wird in der Rückruffunktion definiert;

Daher kann die Rückruffunktion als Ereignisverarbeitungsfunktion definiert werden; also Rückrufe verwalten Der Mechanismus der Funktion wird als Ereignisschleife bezeichnet;)

Kann Nodejs nichts tun, da der Kernel so leistungsfähig ist?

Nein, nachdem die Kernel-Ausführung abgeschlossen ist, muss Nodejs die entsprechende Rückruffunktion ausführen.

Wir brauchen also einen Mechanismus, der dabei hilft, diese Rückruffunktionen für asynchrone Vorgänge zu verwalten und aufrechtzuerhalten, um zu verhindern, dass sie miteinander kämpfen und Fehler verursachen.

So effizient umgesetzt. Deshalb ist ---Ereignisschleife--- erforderlich.

Zusammenfassung: Die Ereignisschleife wird von Nodejs verwendet, um die Ausführungsreihenfolge asynchroner Coderückrufe zu steuern!

3. Wie ist die Ereignisschleife zu verstehen?

? Tipp 1: Synchrone Aufgaben werden immer früher ausgeführt als asynchrone Aufgaben.

Klassifizierung asynchroner APIs. Natürlich klassifizieren wir hier zunächst die asynchronen APIs in Nodejs: Die oben genannten drei asynchronen APIs stellen drei Arten von Warteschlangen innerhalb der Ereignisschleife bereit.

Seltsam? Warum gibt es kein process.nectTick?

Haha, das liegt daran, dass „process.nectTick“ selbst seltsam ist!

process.nectTick

Obwohl process.nectTick eine asynchrone API ist, ist sie nicht Teil der Ereignisschleife.

Bild oben:

Hier handelt es sich um ein weiteres Konzept:

Asynchrones Modul!

Asynchrones Modul

ist dieser magische Typ, der die

libuv

-Bibliothek verwendet, um den Kernel aufzurufen, um Multithread-Operationen zu erreichen!

Wie viel hat das mit Process.nectTick zu tun?

Ja, denn Process.nectTick kann als Teil des asynchronen Moduls verstanden werden.

Daher wird process.nectTick immer vor der Ereignisschleife aufgerufen!

? Tipp 2: Process.nectTick lässt sich am schnellsten von allen asynchronen Aufgaben ausführen.

(Hinweis: Tick verstehen) Die drei Warteschlangen der Ereignisschleife laufen eine Woche lang und werden zu einem Tick Okay, ich verstehe!

Warten Sie ... es scheint, als würde etwas fehlen? Wie wird Promise ausgeführt?

Versprechen

Zusätzlich zur nextTick-Warteschlange gibt es noch eine besondere Warteschlange: die Microtask-Warteschlange. Die Mikrotask-Warteschlange wird hauptsächlich für die Ausführung von Promise-Rückruffunktionen verwendet.

Wie ist dann die Ausführungsreihenfolge der Mikrotask-Warteschlange?

Bild oben:

? Tipp 3: Die Mikrotask-Warteschlange wird hinter der Warteschlange „process.nectTick“ und vor der Ereignisschleife angehängt.

So viel wurde oben gesagt, betrachten wir es als Ganzes

? Tipp 4: Übung bringt wahres Wissen

Wenn Sie klug sind, können Sie die endgültige Druckreihenfolge analysieren?

console.log('同步代码')setImmediate(() => {    console.log('setImmediate');})setTimeout(() => {    console.log('setTimeout');}, 100)Promise.resolve().then(() => {    console.log('promise');})process.nextTick(() => {    console.log('Tick');})复制代码

Dann werden wir das nächste Mal bestimmte Interviewfälle kombinieren, um zu sehen, wie ihre Druckreihenfolge lautet.

Weitere Informationen zu Knoten finden Sie unter:

nodejs-Tutorial

!

Das obige ist der detaillierte Inhalt vonVerstehen Sie die Ereignisschleife von Node in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen