EventEmitter 基础
EventEmitter 是 Node 事件驱动的基石:一个对象可以 emit(触发)具名事件,其他地方 on(监听)这些事件。Node 自身的 http 服务器、fs 流都继承自它——你写的每一个 res.on('data') 都是 EventEmitter 在工作。
最小例子:const ee = new EventEmitter(); ee.on('hello', cb); ee.emit('hello')。emit 可以传任意参数给监听器;同一个事件可以注册多个监听器,按注册顺序执行。
- on(事件, 回调) 注册监听;emit(事件, ...args) 触发并传参
- once() 只监听一次;off()/removeListener() 移除监听
- Node 内置模块大量基于它:流、http 服务器、process 都是事件源
JS
const { EventEmitter } = require('events'); // 浏览器里也能跑的纯逻辑演示 const bus = new EventEmitter(); bus.on('greet', (name) => console.log('你好,' + name)); bus.once('once-event', () => console.log('只触发一次')); bus.emit('greet', 'Node'); // 你好,Node bus.emit('greet', 'World'); // 你好,World bus.emit('once-event'); // 只触发一次 bus.emit('once-event'); // 第二次无输出 // 监听 error 事件是 EventEmitter 的约定 bus.on('error', (e) => console.error('捕获错误:', e.message)); bus.emit('error', new Error('演示性异常'));
本节要点EventEmitter = 事件版“发布订阅”:on 订阅、emit 发布、once 一次性、error 事件必须有人接。




