原理
EventEmitter
是 Node.js 中的一个核心类,用于实现事件驱动编程模式。它允许对象在发生特定事件时触发事件,而其他对象可以监听这些事件并响应。这种模式非常适合处理异步操作,因为它允许程序的不同部分在事件发生时进行通信,而不必直接调用彼此的函数。
EventEmitter
类提供了两个主要的方法:emit()
和 on()
。emit()
方法用于触发事件,而 on()
方法用于监听事件。
使用
要使用 EventEmitter
,你需要先引入 events
模块,然后创建一个 EventEmitter
实例。之后,你可以使用 on()
方法来监听事件,并使用 emit()
方法来触发事件。
代码示例
下面是一个简单的示例,演示了如何使用 EventEmitter
:
// 引入 events 模块
var events = require('events');
// 创建一个自定义的 EventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 定义一个监听器函数,当事件 'message' 被触发时执行
var listener = function messageHandler(msg) {
console.log(`Received message: ${
msg}`);
};
// 使用 'on' 方法将监听器函数绑定到 'message' 事件
eventEmitter.on('message', listener);
// 使用 'emit' 方法触发 'message' 事件,并传递消息内容
eventEmitter.emit('message', 'Hello, this is a test message.');
// 可以移除事件监听器
eventEmitter.removeListener('message', listener);
// 触发事件,此时不会有任何输出,因为监听器已被移除
eventEmitter.emit('message', 'This message will not be received.');
在这个示例中,我们创建了一个 EventEmitter
对象,并为其添加了一个监听器来监听 'message'
事件。当事件被触发时,监听器函数会被调用,并打印出传递的消息。
其他重要方法
once(event, listener)
:添加一个一次性监听器,它在第一次触发事件后就会被自动移除。removeListener(event, listener)
:移除指定的监听器。removeAllListeners([event])
:移除所有监听器,如果指定了事件,则只移除该事件的所有监听器。setMaxListeners(n)
:设置最大监听器数量,防止内存泄漏。