events模块只提供了一个对象,events.EventEmitter。
EventEmitter的核心就是事件发射与事件监听器功能的封装。
EventEmitter的每个事件由一个事件名和若干个参数组成,事件名是:字符串,通常表达一定的语义;对于每个事件,EventEmitter支持若干个事件监听器。
当时间发射时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。
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','byvoid',1991);
运行结果:
listener1 byvoid 1991
listener2 byvoid 1991
以上例子中,emitter为事件someEvent注册了两个事件监听器,然后发射了someEvent事件,运行结果可以看到两个事件监听器回调函数被先后调用。
EventEmitter.on(event,listener)指定事件注册一个监听器,接受一个字符串event和一个回调函数listener。
EventEmitter.emit(event,[arg1],[arg2],[...])发射event事件,传递若干可选参数到事件监听器的参数表。
EventEmitter.once(event,listener)为指定事件注册一个单次监听器。
EventEmitter.removeListener(event,listener)移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器
EventEmitter.removeAllListeners([event])移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器。