首页 > web前端 > js教程 > Node.js 事件发射器

Node.js 事件发射器

DDD
发布: 2024-12-12 22:16:11
原创
828 人浏览过

Node.js EventEmitter

今天我给大家介绍一下EventEmitter类。如您所知,Node.js 具有事件驱动的编程范例。这意味着我们将定义一些事件和回调,我们的事件将在我们的程序流程中被触发和处理。如果你问为什么采用这种方法,那是因为 JavaScript(我在上一篇文章中更详细地解释过)运行单线程,并且异步操作必须以某种方式处理而不阻塞。

如果你问这一切与 EventEmitter 类有什么关系,这个类为我们提供了一个可以轻松处理异步操作的结构。实际上,这就是观察者设计模式的实现。

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");
登录后复制

上面我写了一个如何定义和调用事件的简单示例。这里,“on”方法实际上在一个空对象(主对象)上创建了一个名为“test”的数组。

{
  test: [
    [Function (anonymous)],
    [Function (anonymous)],
    [Function (anonymous)]
  ]
}
登录后复制

这里,名为 eventName 的“on”方法被调用了 3 次,结果结构如上。
正如您所猜测的,名为“test”的事件是通过“emit”方法调用的。这里,foreach 方法返回测试数组并调用其中的函数。

那么这个结构用在哪里呢?
例如,在 DOM 事件中;

const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
  console.log("clicked");
});
登录后复制

例如,在 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();
登录后复制

以上是Node.js 事件发射器的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板