nodejs中什么是 EventEmitter?
封面图
•
2025-10-27
•
nodejs
192
0
0
0
在 Node.js 中,`EventEmitter` 是一个非常重要的内置模块(位于 `events` 模块中),它用于实现**事件驱动编程**。它是 Node.js 的核心概念之一,广泛用于处理异步操作、监听事件、触发事件等。 --- ## 🔹 什么是 EventEmitter? `EventEmitter` 是一个类(class),它允许你创建对象,这些对象可以“发出”事件,并且可以监听这些事件。 简单来说: - **你可以监听某个事件**(比如 “data”、“error” 等)。 - **当某个事件发生时,会触发相应的回调函数**。 --- ## 🔹 使用示例 ```javascript const EventEmitter = require('events'); // 创建一个 EventEmitter 实例 const myEmitter = new EventEmitter(); // 监听 'greet' 事件 myEmitter.on('greet', (name) => { console.log(`Hello, ${name}!`); }); // 触发 'greet' 事件 myEmitter.emit('greet', 'Alice'); ``` 输出: ``` Hello, Alice! ``` --- ## 🔹 常见方法 | 方法 | 描述 | |------|------| | `on(event, listener)` | 监听指定事件 | | `emit(event, [...args])` | 触发指定事件,并传递参数 | | `once(event, listener)` | 只监听一次事件,之后自动移除 | | `removeListener(event, listener)` | 移除指定的监听器 | | `removeAllListeners([event])` | 移除所有监听器或指定事件的监听器 | --- ## 🔹 常见用途 1. **异步操作通知**:比如 HTTP 请求完成后触发 `'end'` 事件。 2. **自定义事件系统**:比如创建一个自定义的事件来通知某些状态变化。 3. **流(Streams)**:Node.js 的流(如 `fs.ReadStream`)使用 `EventEmitter` 来触发 `'data'`, `'end'`, `'error'` 等事件。 --- ## 🔹 自定义类继承 EventEmitter 你可以让自己的类继承 `EventEmitter`,从而拥有事件功能: ```javascript const EventEmitter = require('events'); class MyCustomClass extends EventEmitter { constructor() { super(); } doSomething() { this.emit('done', 'Task completed!'); } } const obj = new MyCustomClass(); obj.on('done', (message) => { console.log(message); // 输出: Task completed! }); obj.doSomething(); ``` --- ## ✅ 总结 | 项目 | 内容 | |------|------| | 模块 | `events` | | 核心功能 | 事件监听和触发 | | 用途 | 异步编程、自定义事件系统、流处理等 | | 常用方法 | `on`, `emit`, `once`, `removeListener` | 如果你在开发 Node.js 应用,尤其是处理异步操作、网络请求、文件读写等场景,`EventEmitter` 是你必须了解的核心工具之一。
上一篇:
npm是什么?
下一篇:
为什么要用 nodejs?
标题录入,一次不能超过6条
留言
评论