CNode

细节3:使用EventEmitter();事件模块,

Zzhs077发布于14 年前最后回复13 年前6 回复5619 浏览0 收藏

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

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

});

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

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

}

查看回复

回复 (6)

J
jiyinyiyong#1·14 年前

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

S
saber#2·14 年前
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...

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

S
saber#3·14 年前

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

J
jiyinyiyong#4·14 年前
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...

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

S
saber#5·14 年前
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...

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

J
jiyinyiyong#6·13 年前
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...

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

参与回复
登录后即可参与回复。登录