Node.js EventEmitter 事件发射器
EventEmitter 是 Node.js 实现事件驱动模式的核心类,提供事件的注册、触发和移除能力。
基本使用
JavaScript
const EventEmitter = require('events');
const emitter = new EventEmitter();
// 注册事件监听器
emitter.on('message', (data) => {
console.log('收到消息:', data);
});
// 触发事件
emitter.emit('message', 'Hello World');
常用方法
| 方法 | 说明 |
|---|---|
| on(event, listener) | 注册监听器 |
| once(event, listener) | 注册一次性监听器 |
| emit(event, ...args) | 触发事件 |
| removeListener(event, listener) | 移除指定监听器 |
| removeAllListeners(event) | 移除所有监听器 |
| listeners(event) | 获取所有监听器 |
一次性监听器
JavaScript
emitter.once('connect', () => {
console.log('首次连接');
});
emitter.emit('connect'); // 输出: 首次连接
emitter.emit('connect'); // 无输出
自定义类继承 EventEmitter
JavaScript
const EventEmitter = require('events');
class User extends EventEmitter {
login(username) {
this.emit('login', username);
}
}
const user = new User();
user.on('login', (name) => {
console.log(`${name} 登录成功`);
});
user.login('张三');
默认单个事件最多注册 10 个监听器,可通过 emitter.setMaxListeners(n) 调整。
要点总结
- EventEmitter 提供事件的注册、触发、移除能力
- on 添加监听器,once 添加一次性监听器
- 通过继承 EventEmitter 可让自定义类支持事件
- 注意监听器数量限制,避免内存泄漏
📝 发现内容有误?点击此处直接编辑