Node.js EventEmitter

2020-06-17 05:29:37易采站长站整理
listener – 处理事件函数

该事件在添加新监听器时被触发。

2removeListener

event – 字符串,事件名称

listener – 处理事件函数

从指定监听器数组中删除一个监听器。需要注意的是,此操作将会改变处于被删监听器之后的那些监听器的索引。

实例

以下实例通过 connection(连接)事件演示了 EventEmitter 类的应用。

创建 main.js 文件,代码如下:


var events = require('events');
var eventEmitter = new events.EventEmitter();

// 监听器 #1
var listener1 = function listener1() {
console.log('监听器 listener1 执行。');
}

// 监听器 #2
var listener2 = function listener2() {
console.log('监听器 listener2 执行。');
}

// 绑定 connection 事件,处理函数为 listener1
eventEmitter.addListener('connection', listener1);

// 绑定 connection 事件,处理函数为 listener2
eventEmitter.on('connection', listener2);

var eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners + " 个监听器监听连接事件。");

// 处理 connection 事件
eventEmitter.emit('connection');

// 移除监绑定的 listener1 函数
eventEmitter.removeListener('connection', listener1);
console.log("listener1 不再受监听。");

// 触发连接事件
eventEmitter.emit('connection');

eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners + " 个监听器监听连接事件。");

console.log("程序执行完毕。");

以上代码,执行结果如下所示:


$ node main.js
2 个监听器监听连接事件。
监听器 listener1 执行。
监听器 listener2 执行。
listener1 不再受监听。
监听器 listener2 执行。
1 个监听器监听连接事件。
程序执行完毕。


error 事件

EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到
异常的时候通常会触发 error 事件。

当 error 被触发时,EventEmitter 规定如果没有响
应的监听器,Node.js 会把它当作异常,退出程序并输出错误信息。

我们一般要为会触发 error
事件的对象设置监听器,避免遇到错误后整个程序崩溃。例如:


var events = require('events');
var emitter = new events.EventEmitter();
emitter.emit('error');

运行时会显示以下错误:


node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Uncaught, unspecified 'error' event.