Heim >Web-Frontend >js-Tutorial >Verstehen Sie in einem Artikel schnell die Ereignisschleife in Node.js
In diesem Artikel erfahren Sie mehr über die Ereignisschleife in der asynchronen Programmierung mit Node.js. Die Ereignisschleife ist ein sehr wichtiger Teil der Implementierung der nicht blockierenden E/A von Node! Ereignisschleife und nicht blockierende E/A sind die zugrunde liegenden Funktionen der C++-Bibliothek LIBUV. Sobald Sie die Ereignisschleife und die nicht blockierende E/A verstanden haben, werden Sie verstehen, wie der asynchrone Betrieb von Node funktioniert!
Das Node-eigene Ausführungsmodell – die Ereignisschleife – ist es, was Callback-Funktionen so häufig macht. [Empfohlenes Lernen: „nodejs-Tutorial“]
Wenn der Prozess startet, erstellt Node eine Schleife ähnlich wie while(true)
. Jedes Mal, wenn der Schleifenkörper ausgeführt wird, wird der Prozess Häkchen. Der Prozess jedes Tick
besteht darin, zu prüfen, ob ein zu verarbeitendes Ereignis vorhanden ist, und wenn ja, das Ereignis und die zugehörige Rückruffunktion abzurufen. Wenn zugehörige Callback-Funktionen vorhanden sind, werden diese ausgeführt. Geben Sie dann die nächste Schleife ein. Wenn keine weiteren Ereignisse zu verarbeiten sind, verlassen Sie den Prozesswhile(true)
的循环,每执行一次循环体的过程我 们称为 Tick
。每个 Tick
的过程就是查看是否有事件待处理,如果有,就取出事件及其相关的回调 函数。如果存在关联的回调函数,就执行它们。然后进入下个循环,如果不再有事件处理,就退 出进程
Tick 流程图
事件循环是实现 Node.js 非阻塞 I/O 非常重要的一部分! 事件循环,非阻塞 I/O 都是属于 LIBUV
Tick-Flussdiagramm
LIBUV
. Sobald Sie die Ereignisschleife und nicht blockierende E/A verstanden haben, werden Sie verstehen, wie der asynchrone Betrieb von Node.js funktioniert!
const eventloop = { queue: [], // 循环方法 loop() { // 不停的检测队列是否还有未循环的消息 while (this.queue.length) { const callback = this.queue.shift(); callback(); } // 执行下一次循环 // 小知识点 JS的 this绑定 setTimeout(this.loop.bind(this), 50); }, // 添加消息到队列 add(callback) { this.queue.push(callback); }, }; eventloop.loop(); setTimeout(() => { eventloop.add(() => { console.log("第一个"); }); }, 500); setTimeout(() => { eventloop.add(() => { console.log("第二个"); }); }, 800);
Weitere Programmierkenntnisse finden Sie unter:
Programmiervideo🎜! ! 🎜Das obige ist der detaillierte Inhalt vonVerstehen Sie in einem Artikel schnell die Ereignisschleife in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!