Heim >Web-Frontend >js-Tutorial >Node.js EventEmitter

Node.js EventEmitter

DDD
DDDOriginal
2024-12-12 22:16:11876Durchsuche

Node.js EventEmitter

Heute werde ich Ihnen etwas über die EventEmitter-Klasse erzählen. Wie Sie wissen, verfügt Node.js über ein ereignisgesteuertes Programmierparadigma. Das bedeutet, dass wir einige Ereignisse und Rückrufe definieren, unsere Ereignisse werden in unserem Programmablauf ausgelöst und verarbeitet. Wenn Sie sich fragen, warum ein solcher Ansatz gewählt wurde, liegt das daran, dass JavaScript, das ich in meinem vorherigen Artikel ausführlicher erläutert habe, einen einzelnen Thread ausführt und asynchrone Vorgänge ohne Blockierung verarbeitet werden müssen.

Wenn Sie fragen, was das alles mit der EventEmitter-Klasse zu tun hat: Diese Klasse bietet uns eine Struktur, mit der wir asynchrone Operationen problemlos verarbeiten können. Eigentlich ist dies die Observer Design Pattern-Implementierung.

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

Oben habe ich ein einfaches Beispiel geschrieben, wie man ein Ereignis definiert und aufruft. Hier erstellt die „on“-Methode tatsächlich ein Array namens „test“ für ein leeres Objekt (Masterobjekt).

{
  test: [
    [Function (anonymous)],
    [Function (anonymous)],
    [Function (anonymous)]
  ]
}

Hier wird die „on“-Methode dreimal mit dem Namen eventName aufgerufen und die resultierende Struktur ist wie oben.
Wie Sie sich vorstellen können, wird das Ereignis mit dem Namen „test“ mit der Methode „emit“ aufgerufen. Hier gibt eine foreach-Methode das Testarray zurück und ruft die darin enthaltenen Funktionen auf.

Wo wird diese Struktur verwendet?
Zum Beispiel in einem DOM-Ereignis;

const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
  console.log("clicked");
});

Zum Beispiel in einer Netzwerkanfrage in der Node.js-Anwendung;

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

Das obige ist der detaillierte Inhalt vonNode.js EventEmitter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn