这里分享一下 "跟我学 Node.js(二)-- Node.js 事件模块" 的攻略。
事件模块简介
Node.js 的事件模块(events module)是一个内置模块,可用于实现事件驱动(event-driven)模型的程序编写。事件模块提供了一个 EventEmmiter 类(又称为事件发射器),可以用它来触发事件、处理事件以及监听事件。该模块构建在观察者模式(Observer pattern)之上。
核心函数
-
EventEmitter.on()
用于在某个事件的监听器列表中添加一个新的监听器。 -
EventEmitter.emit()
用于触发或发射一个事件。 对应第一个arg参数将会成为事件监听器函数的第一个参数。 -
EventEmitter.removeListener()
用于在特定的监听器列表中移除一个监听器。 -
EventEmitter.once()
是on()
方法的一种变体,它只会触发一次事件,然后在第一次触发后自动进行移除。
示例(1)
const EventEmitter = require('events');
class CustomEmitter extends EventEmitter { }
const ce = new CustomEmitter();
// 监听 name 事件
ce.on('name', () => {
console.log('这是 name 事件的监听器函数1');
});
// 监听 name 事件
ce.on('name', () => {
console.log('这是 name 事件的监听器函数2');
});
// 监听 name 事件
ce.on('name', () => {
console.log('这是 name 事件的监听器函数3');
});
// 触发 name 事件
ce.emit('name');
输出结果:
这是 name 事件的监听器函数1
这是 name 事件的监听器函数2
这是 name 事件的监听器函数3
上述代码演示了如何使用 Node.js 事件模块创建事件与监听器,ce.emit('name')
触发了名为 'name'
的事件,并依次调用了该事件下面的所有监听器1、2、3。
示例(2)
const EventEmitter = require('events');
class CustomEmitter extends EventEmitter { }
const ce = new CustomEmitter();
function listener1() {
console.log('这是 name 事件的监听器函数1');
}
function listener2() {
console.log('这是 name 事件的监听器函数2');
}
function listener3() {
console.log('这是 name 事件的监听器函数3');
}
// 监听 name 事件
ce.on('name', listener1);
ce.on('name', listener2);
ce.on('name', listener3);
// 触发 name 事件
// ce.emit('name');
// 移除监听器 listener2
ce.removeListener('name', listener2);
// 再次触发 name 事件
ce.emit('name');
输出结果:
这是 name 事件的监听器函数1
这是 name 事件的监听器函数3
上述代码演示了如何使用 Node.js 事件模块创建事件与监听器,ce.emit('name')
触发了名为 'name'
的事件,并依次调用了该事件下面的所有监听器1(listener1)、2(listener2)、3(listener3)。
接着,我们使用 removeListener()
方法删除监听器 listener2
,并再次执行 ce.emit('name')
。观察到输出结果只有监听器1(listener1)和3(listener3)。
以上是简单的 Node.js 事件模块攻略,更多细节请参考官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跟我学Nodejs(二)— Node.js事件模块 - Python技术站