一、Node的事件订阅发布

1.EventEmitter
Node中很多模块都能够使用EventEmitter,有了EventEmitter才能方便的进行事件的监听。下面看一下Node.js中的EventEmitter如何使用。

(1) 基本使用
EventEmitter是对事件触发和事件监听功能的封装,在node.js中的event模块中,event模块只有一个对象就是EventEmitter,下面是一个最基本的使用方法:

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); 

上面的代码中首先实例化了一个EventEimitter对象,然后就可以进行事件的监听以及发布。通过on方法对特定的事件进行监听,通过emit方法对事件进行发布。在1s后发布一个"some_event"事件,这个时候就会自动被event对象通过on进行监听,并触发对应的回调方法。

(2)EventEmitter支持的方法

EventEmitter实例对象支持的方法列表如下:emitter.on(name, f) //对事件name指定监听函数femitter.once(name, f) //与on方法类似,但是监听函数f是一次性的,使用后自动移除emitter.listeners(name) //返回一个数组,成员是事件name所有监听函数emitter.removeListener(name, f) //移除事件name的监听函数femitter.removeAllListeners(name) //移除事件name的所有监听函数......

同时,事件的发布emit方法可以传入多个参数,第一个参数是定义的事件,后面其他参数回作为参数传递到监听器的回调函数中。

事件的监听以及发布