EventEmitter 类
学习笔记;
event 模块只提供了一个对象 events.EventEmitter,
核心就是时间触发和事件监听功能
var events = require('events');
//创建对象
var eventEmitter = new events.EventEmitter();
EventEmitter对象如果在实例化时发生错误,会触发error事件
//event.js
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('some_event',function(){
console.log('some_event 事件触发');
})
setTimeout(function(){
event.emit('some_event');
},1000);
当事件触发时注册到这个事件的事件监听器依次被调用,时间参数作为回调函数参数传递
var events = require('events');
var emitter = new events.EventEmintter();
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','arg1 参数','arg2 参数');
执行结果
listener1 arg1 参数 arg2 参数
listener2 arg1 参数 arg2 参数
EventEmitter 提供多个属性,如on和emit。on用于绑定事件函数,emit用于触发事件。
var events = require('events');
var eventEmitter = new event.EventEmitter();
var listener1 = function listener1(){
console.log('监听器listener1执行');
}
var listener2 = function listener2(){
console.log('监听器listener2执行');
}
eventEmitter.addlistener('connection',listener1);
eventEmitter.on('connection',listener2);
//listenerCount 返回指定事件监听器数量
var eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners + " 个监听器监听连接事件。");
eventEmitter.emit('connection');
eventEmitter.removeListener('connection',listener1);
console.log("listener1 不再受监听。")
eventEmitter.emit('connection');
eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners + " 个监听器监听连接事件")
console.log('程序执行完毕。');
运行结果
2个监听器监听连接事件。
监听器listener1执行。
监听器listener2执行。
listener1不再受监听。
监听器listener2执行
1个监听器监听连接事件。
程序执行完毕。