细节3:使用EventEmitter();事件模块,
发布于 12 年前 作者 zhs077 5225 次浏览 最后一次编辑是 8 年前

当要定时调用某个函数可以使用EventEmitter,他会去注册你的事件到系统消息队列中去。 var emitter = new events.EventEmitter();//事件发射器 //创建http监听事件 emitter.on(“RequestEvent”, function (arg1, arg2) {

get(); //重复调用的函数

});

//请求服务器信息 function request() {

emitter.emit("RequestEvent", null, null);

}

6 回复

一直不明白 EventEmitter 模块能用在什么地方…

用在你写的API里想提供一些回调函数给别人,但又不想在你的代码里显示地去处理别人的回调,就在需要调用别人回调函数的时候发个事件信号, 由调用者自己决定要不要注册你的事件,我的理解是这样的

压根不是把你的事件注册到系统消息队列里, 跟系统消息队列没一点关系, 你看过emitter的源码吗?

@saber 有具体到项目甚至功能上的例子么?

@saber 曾经用emitter写过一个消息队列,通过emitter将消息分发到各个消息订阅者

@saber 好像有点懂了… 比如 A 接收来自 B 的消息发起一个消息, 又有个 C 可能会等 A 的消息, 然后关系变复杂了, 用回调写死了修改比较麻烦… 于是用事件注册…

回到顶部