理解 Node.js 中的 Event Emitters:如何以及何时使用它们
发布: (2025年12月24日 GMT+8 22:09)
2 min read
原文: Dev.to
Source: Dev.to
什么是 Node.js 中的 Event Emitters?
Node.js 中的 Event Emitters 是其异步、事件驱动架构的核心组成部分。它们通过发出具名事件并使用已注册的回调函数响应这些事件,实现应用不同部分之间的通信。
Event Emitters 如何工作?
- Node.js 提供了
events模块以及EventEmitter类。 - 从
EventEmitter派生的对象可以注册事件监听器并异步发出事件。 - 每次事件被触发时,监听函数都会执行。
示例:基本用法
const EventEmitter = require('events');
const emitter = new EventEmitter();
// 注册事件监听器
emitter.on('greet', (name) => {
console.log(`Hello, ${name}!`);
});
// 触发事件
emitter.emit('greet', 'Alice'); // Output: Hello, Alice!
常见用例:自定义日志系统
假设你需要在不同组件之间实现自定义日志解决方案:
- 创建一个在需要记录时发出事件的 logger。
- 为这些日志事件附加监听器以处理或存储日志。
示例
const EventEmitter = require('events');
class Logger extends EventEmitter {
log(message) {
this.emit('log', message);
}
}
const logger = new Logger();
// 监听日志事件
logger.on('log', (msg) => {
console.log(`Log: ${msg}`);
});
logger.log('Server started'); // Output: Log: Server started
小结
- 使用 Event Emitters 可以在 Node.js 应用的不同部分之间实现松耦合的通信。
- 非常适合自定义事件、流式 API 或构建模块化系统。
你可以扩展或复用 EventEmitter 来创建强大、模块化的 Node.js 应用。