Node.js 词条目录
前端Wiki/词条/EventEmitter 事件

EventEmitter 事件

定义Node 内置的发布订阅实现,提供 on 监听与 emit 触发的事件中心

events 模块导出 EventEmitter 类,几乎所有 Node 内置对象都基于它构建。核心用法:on 注册监听器,emit 按事件名触发并依次调用监听器,off 移除监听器,once 注册只触发一次的监听器。同一个事件名可以挂多个监听器,它们按注册顺序执行。

当模块之间需要解耦时,自定义事件比直接调函数灵活得多:发送方完全不用关心谁在监听。需要注意几点:emit 是同步执行的;默认超过 10 个监听器会打印内存泄漏警告,可用 setMaxListeners 放宽;如果监听器抛出异常而没有被捕获,整个进程会随之崩溃。

JavaScript
const EventEmitter = require('events');
const bus = new EventEmitter();

bus.on('login', (user) => {
  console.log('记录登录日志: ' + user);
});

bus.once('ready', () => {
  console.log('初始化完成,只触发一次');
});

bus.emit('login', 'alice');
bus.emit('ready');
bus.emit('ready'); // 第二次不再触发
⚠ 常见误区
🔗 相关词条EventEmitter 基础自定义事件实战
← 返回来源章节EventEmitter 基础