Maison > interface Web > js tutoriel > Émetteur d'événements Node.js

Émetteur d'événements Node.js

DDD
Libérer: 2024-12-12 22:16:11
original
820 Les gens l'ont consulté

Node.js EventEmitter

Aujourd'hui, je vais vous parler de la classe EventEmitter. Comme vous le savez, Node.js a un paradigme de programmation événementielle. Cela signifie que nous définirons certains événements et rappels, nos événements seront déclenchés et traités dans notre flux de programme. Si vous demandez pourquoi une telle approche a été adoptée, c'est parce que JavaScript, que j'ai expliqué plus en détail dans mon article précédent, exécute un seul thread et que les opérations asynchrones doivent être gérées sans blocage d'une manière ou d'une autre.

Si vous demandez ce que tout cela a à voir avec la classe EventEmitter, cette classe nous offre une structure où nous pouvons facilement gérer des opérations asynchrones. En fait, il s'agit de l'implémentation du modèle de conception Observer.

const EventEmitter = require("events");
class Emitter extends EventEmitter {}

const myE = new Emitter();

myE.on("test", () => {
  console.log("event meydana geldi.");
});
myE.on("test", () => {
  console.log("event meydana geldi.");
});
myE.on("test", () => {
  console.log("event meydana geldi.");
});

console.log(myE.eventNames());

myE.emit("test");
Copier après la connexion

Ci-dessus, j'ai écrit un exemple simple de la façon de définir et d'appeler un événement. Ici, la méthode "on" crée en fait un tableau appelé "test" sur un objet vide (objet maître).

{
  test: [
    [Function (anonymous)],
    [Function (anonymous)],
    [Function (anonymous)]
  ]
}
Copier après la connexion

Ici, la méthode "on" est appelée trois fois avec le nom eventName et la structure résultante est comme ci-dessus.
Comme vous pouvez le deviner, l'événement nommé "test" est appelé avec la méthode "emit". Ici, une méthode foreach renvoie le tableau de test et appelle les fonctions qu'il contient.

Alors, où est utilisée cette structure ?
Par exemple, dans un événement DOM ;

const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
  console.log("clicked");
});
Copier après la connexion

Par exemple, dans une requête Réseau dans une application Node.js ;

const http = require("http");
const req = http
  .request(
    {
      method: "GET",
      hostname: "jsonplaceholder.typicode.com",
      path: "/todos/1"
    },
    (res) => {
      res.on("data", (chunk) => {
        console.log(chunk.toString());
      });

      res.on("end", () => {
        console.log("response ended.");
      });
    }
  )
  .end();
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal