一、EventEmitter模块简介
事件发射器EventEmitter是Node.js中实现事件驱动编程的核心模块,经常被用于实现发布/订阅的通信模式。
EventEmitter内部维护了一个event键值对,键为事件名,值为回调函数数组,事件触发时按注册的顺序同步执行回调函数。
EventEmitter类的设计允许一个对象触发事件,然后让其他对象监听并响应这些事件。
事件驱动编程除了使用Node.Js语法支持的EventEmitter,也可以使用原生浏览器支持的JavaScript接口EventTarget。
EventEmitter在编码时的使用步骤:
1.创建事件发射器实例。
2.注册事件监听器。
a.监听用户自定义事件。
b.监听错误事件,未被监听的error事件会导致Node.js进程崩溃。
3.应用程序中触发事件。
4.应用程序根据需要移除监听器。
创建EventEmitter实例的基础语法:
//引入events模块
var events = require('events');
//创建eventEmitter对象
var eventEmitter = new events.EventEmitter();
二、EventEmitter模块的常用接口函数
1.addListener(event, listener)
为事件添加监听器。
2.on(event, listener)
注册事件监听器。
3.emit(event, [arg1], [arg2], [...])
触发事件监听器,并传递参数。
4.removeListener(event, listener)
移除指定事件的某个监听器。
5.removeAllListeners([event])
移除指定事件的所有监听器。
代码样例:
const EventEmitter = require('events');
// 1. 创建事件发射器实例
class MyEmitter extends EventEmitter {}
const emitter = new MyEmitter();
// 2. 注册事件监听器
emitter.on('downloadComplete', (fileName) => {
console.log(`${fileName} download complete!`);
});
// 3. 触发事件(可传参数)
emitter.emit('downloadComplete', 'music.mp3');
运行结果:
music.mp3 download complete!
三、EventEmitter特殊语法
1.为同一个Event事件创建多个监听器,多个监听器将按照添加顺序被依次触发。
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('data', (data) => {
console.log('Listener 1 received:', data);
});
even

最低0.47元/天 解锁文章
671

被折叠的 条评论
为什么被折叠?



