1. EventEmitter 类: 在 Node.js 中,events 模块提供了 EventEmitter 类,该类用于实现事件的发布和订阅。EventEmitter 的实例可以触发事件,也可以监听事件。
2. 基本使用示例: 下面是一个简单的示例,演示了如何使用 EventEmitter:
const EventEmitter = require('events');
// 创建一个事件发射器实例
const myEmitter = new EventEmitter();
// 监听 'event' 事件
myEmitter.on('event', () => {
console.log('Event occurred!');
});
// 触发 'event' 事件
myEmitter.emit('event');
在这个例子中,当 myEmitter 实例触发 'event' 事件时,与之相关联的回调函数将被调用,输出 'Event occurred!'。
3. 带参数的事件: 事件可以传递参数给回调函数,如下所示:
myEmitter.on('sum', (a, b) => {
console.log(`Sum is: ${a + b}`);
});
myEmitter.emit('sum', 3, 5);
在这个例子中,当触发 'sum' 事件时,两个数字将作为参数传递给回调函数。
4. 一次性事件监听器: 使用 once 方法可以注册一次性事件监听器,该监听器只会在第一次触发事件时被调用。
myEmitter.once('onceEvent', () => {
console.log('This listener will only be called once.');
});
myEmitter.emit('onceEvent');
myEmitter.emit('onceEvent'); // 这次不会触发监听器
5. 移除事件监听器: 使用 removeListener 方法可以移除事件监听器。
const listener = () => {
console.log('Listener to be removed.');
};
myEmitter.on('removeEvent', listener);
myEmitter.emit('removeEvent');
// 移除监听器
myEmitter.removeListener('removeEvent', listener);
myEmitter.emit('removeEvent'); // 这次不会触发监听器
这只是一个简单的介绍,Node.js 的事件系统非常强大,可以应用于许多场景,如处理 HTTP 请求、文件 I/O、网络通信等。了解事件的概念并熟练使用 EventEmitter 类对于构建可扩展和高效的 Node.js 应用程序非常重要。
转载请注明出处:http://www.zyzy.cn/article/detail/4758/Node.js