event.js文件
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent',function(arg1,arg2){
console.log('listener1',arg1,arg2);
});
emitter.on('someEvent',function(arg1,arg2){
console.log('listener2',arg1,arg2);
});
emitter.emit('someEvent','agr1参数','arg2参数');
运行结果:
PS D:\Demo1> node event.js
listener1 agr1参数 arg2参数
listener2 agr1参数 arg2参数
EventEmitter其他属性介绍:
- addListener(event,listener):为指定事件添加一个监听器到监听器数组的尾部。
- on(event,listener):为指定事件注册一个监听器,接受一个字符串event和一个回调函数。
- once(event,listener):为指定事件注册一个单次监听器,即监听器最多只触发一次,触发后立刻解除该监听器。
- removeListener(event,listener):移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。它接受两个参数,第一个是事件名称,第二个是回调函数名称。
- removeAllListener([event]):移除所有事件的所有监听器。
- setMaxListeners(n):默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于改变监听器的默认限制的数量。
- listeners(event):返回指定事件的监听器数组。
- emit(event,[arg1],[arg2],[...]):按监听器的顺序执行每个监听器,如果事件有则返回true,否则为false。
- listenerCount(emitter,event):返回指定事件的监听器数量。
案例:
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个监听器监听连接事件
程序执行完毕。