Maison > Article > interface Web > Comprenez rapidement la boucle d'événements dans Node.js dans un seul article
Cet article vous amènera à comprendre la boucle d'événements dans la programmation asynchrone Node.js. La boucle d'événements est une partie très importante de l'implémentation des E/S non bloquantes de Node ! La boucle d'événements et les E/S non bloquantes sont les fonctionnalités sous-jacentes de la bibliothèque C++ LIBUV. Une fois que vous aurez compris la boucle d'événements et les E/S non bloquantes, vous comprendrez comment fonctionne le fonctionnement asynchrone de Node !
Le modèle d'exécution propre au nœud - la boucle d'événements, est ce qui rend les fonctions de rappel si courantes. [Apprentissage recommandé : "Tutoriel Nodejs"]
Lorsque le processus démarre, Node créera une boucle similaire à while(true)
Chaque fois que le corps de la boucle est exécuté, le processus est appelé <. code>Cochez. Le processus de chaque Tick
consiste à vérifier s'il y a un événement à traiter, et si c'est le cas, à récupérer l'événement et sa fonction de rappel associée. Si des fonctions de rappel associées existent, elles sont exécutées. Entrez ensuite dans la boucle suivante. S'il n'y a plus d'événements à gérer, quittez le processuswhile(true)
的循环,每执行一次循环体的过程我 们称为 Tick
。每个 Tick
的过程就是查看是否有事件待处理,如果有,就取出事件及其相关的回调 函数。如果存在关联的回调函数,就执行它们。然后进入下个循环,如果不再有事件处理,就退 出进程
Tick 流程图
事件循环是实现 Node.js 非阻塞 I/O 非常重要的一部分! 事件循环,非阻塞 I/O 都是属于 LIBUV
Cochez l'organigramme
LIBUV
. Une fois que vous aurez compris la boucle d'événements et les E/S non bloquantes, vous comprendrez comment fonctionne le fonctionnement asynchrone de Node.js !
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);
Pour plus de connaissances sur la programmation, veuillez visiter :
Vidéo de programmation🎜 ! ! 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!