当要定时调用某个函数可以使用EventEmitter,他会去注册你的事件到系统消息队列中去。 var emitter = new events.EventEmitter();//事件发射器 //创建http监听事件 emitter.on("RequestEvent", function (arg1, arg2) {
get(); //重复调用的函数
});
//请求服务器信息 function request() {
emitter.emit("RequestEvent", null, null);
}
回复 (6)
J
一直不明白 EventEmitter 模块能用在什么地方...
S
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...
用在你写的API里想提供一些回调函数给别人,但又不想在你的代码里显示地去处理别人的回调,就在需要调用别人回调函数的时候发个事件信号, 由调用者自己决定要不要注册你的事件,我的理解是这样的
S
压根不是把你的事件注册到系统消息队列里, 跟系统消息队列没一点关系, 你看过emitter的源码吗?
J
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...
@saber 有具体到项目甚至功能上的例子么?
S
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...
@saber 曾经用emitter写过一个消息队列,通过emitter将消息分发到各个消息订阅者
J
引用 jiyinyiyong一直不明白 EventEmitter 模块能用在什么地方...
@saber 好像有点懂了... 比如 A 接收来自 B 的消息发起一个消息, 又有个 C 可能会等 A 的消息,, 然后关系变复杂了, 用回调写死了修改比较麻烦.. 于是用事件注册..
参与回复
登录后即可参与回复。登录