首页/ 学科题库/ nodejs/ Node.js 监听与触发事件
nodejs 实战教程

Node.js 监听与触发事件

2026-05-15 约 5 分钟 juanwangdev

Node.js 监听与触发事件

事件监听与触发是 Node.js 事件驱动编程的基础操作,掌握完整的 API 用法至关重要。

注册监听器

on 与 addListener

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

// on 和 addListener 完全等价
emitter.on('data', (msg) => console.log(msg));
emitter.addListener('data', (msg) => console.log(msg));

prependListener(前置监听器)

JavaScript
emitter.on('order', () => console.log('第二执行'));
emitter.prependListener('order', () => console.log('第一执行'));

emitter.emit('order');
// 输出:
// 第一执行
// 第二执行

触发事件

JavaScript
// 无参数触发
emitter.emit('event');

// 带参数触发
emitter.emit('data', { id: 1, name: 'test' });

// 多参数触发
emitter.emit('message', 'hello', 123, true);

emit() 返回布尔值,表示是否有监听器处理了该事件。

移除监听器

JavaScript
function handler() {
  console.log('handler');
}

emitter.on('test', handler);
emitter.removeListener('test', handler);
// 或
emitter.off('test', handler); // Node.js 10+ 新增别名

// 移除某事件所有监听器
emitter.removeAllListeners('test');

// 移除所有事件的所有监听器
emitter.removeAllListeners();

移除监听器时必须传入相同的函数引用,匿名函数无法被移除。

获取监听器信息

JavaScript
// 获取监听器数量
emitter.listenerCount('data');

// 获取监听器数组
emitter.listeners('data');

// 获取所有事件名
emitter.eventNames();

要点总结

  • on/addListener 注册监听器,prependListener 添加到队列头部
  • emit 返回布尔值表示事件是否被处理
  • 移除监听器需传入相同函数引用
  • 使用 listenerCount 和 listeners 查询监听器状态
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 Node.js EventEmitter 事件发射器 下一篇 → Node.js 异步回调