Maison  >  Article  >  interface Web  >  Comprenez rapidement la boucle d'événements dans Node.js dans un seul article

Comprenez rapidement la boucle d'événements dans Node.js dans un seul article

青灯夜游
青灯夜游avant
2021-07-05 10:58:141647parcourir

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 !

Comprenez rapidement la boucle d'événements dans Node.js dans un seul article

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 的过程就是查看是否有事件待处理,如果有,就取出事件及其相关的回调 函数。如果存在关联的回调函数,就执行它们。然后进入下个循环,如果不再有事件处理,就退 出进程

Comprenez rapidement la boucle dévénements dans Node.js dans un seul article
   Tick 流程图

事件循环是实现 Node.js 非阻塞 I/O 非常重要的一部分! 事件循环,非阻塞 I/O 都是属于 LIBUV

Comprenez rapidement la boucle dévénements dans Node.js dans un seul article
Cochez l'organigramme

La boucle d'événements est une partie très importante de la réalisation d'E/S non bloquantes Node.js ! 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.js !

Simuler une boucle d'événement via le code

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);

Ce qui précède est l'exemple le plus basique d'une boucle d'événement, nous pouvons y ajouter des messages, puis il détectera après un certain temps s'il y a des événements qui n'ont pas été traités, et si tel est le cas, le traitement des événements sera exécuté

Chaque boucle d'événements est une nouvelle pile d'appels

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer