EventEmitter类
在node.js的用于实现各种事件处理的event模块中,定义了一个EventEmitter类。所有可能触发事件的对象都是一个继承了EventEmitter类的子类的实例对象。EventEmitter定义了许多的方法,所有与对象的事件处理函数的绑定及解除均依靠这些方法的调用来执行。
EventEmitter类的各种方法
addListener(event,listener)对指定事件绑定事件处理的函数
on(event,listener)对指定事件绑定事件的函数(addlistener的别名)
once(event,listener)对指定事件指定只执行一次的事件处理函数
removeListener(event,listener)对指定事件解除事件处理函数
removeAllListeners([ event])对指定事件解除所有事件处理函数
setMaxListeners(n)指定事件处理函数的最大数量
listeners(event)获取指定事件的所有处理函数
emit(event,[arg1],[arg2])手工触发指定事件
可以对统一事件绑定多个处理函数,默认情况下,针对统一指定事件,最多可以绑定10个事件处理函数。可以通过setMaxListeners方法修改最多可以绑定的事件处理函数数量。
emitter.satMaxlisteners(n);
EventEmitter自身拥有一个listenerCount方法,可以用来获取某个指定事件的事件处理函数的数量。
EventEmitter.listenerCount(emitter,event);第一个参数用于指定需要获取哪个对象的事件处理函数的数量,第二个参数用于指定需要获取哪个事件的事件处理函数的数量。
在events模块中,为EventEmitter类本身定义了两个事件:newListener事件与removeListener事件。
任何时候,当对继承了EventEmiter类的子类实例对象绑定事件处理函数时,都将触发EventEmitter类的newListener事件,代码如下
emitter.on('newListener',function(e,f){
//事件处理函数
})在事件处理函数中,可使用两个参数,其中第一个参数为被绑定的事件名,第二个参数为绑定的事件处理函数。
事件环机制