乐趣区

关于Nodejs的事件订阅发布

一、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 指定监听函数 f
emitter.once(name, f) // 与 on 方法类似,但是监听函数 f 是一次性的,使用后自动移除
emitter.listeners(name) // 返回一个数组,成员是事件 name 所有监听函数
emitter.removeListener(name, f) // 移除事件 name 的监听函数 f
emitter.removeAllListeners(name) // 移除事件 name 的所有监听函数

......

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

事件的监听以及发布

退出移动版