首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地eventEmitter侦听全局eventEmitter

本地eventEmitter侦听全局eventEmitter
EN

Stack Overflow用户
提问于 2014-04-22 01:56:37
回答 1查看 745关注 0票数 3

我几乎把题目写成- eventEmitters通信。

我有一个node.js模块(X),它位于全局范围(它使用eventEmitter)。然后,我有每个套接字的本地代码(用户连接)。

现在,我正在对全局变量G={'X':X}进行处理,以便套接字能够像这样访问X:

代码语言:javascript
复制
G.X.on('someEvent',doSomething);

这太蠢了!现在,每当我启动服务器时,它看起来都很好(我接收到了事件),但是如果我刷新页面并发出一个事件,我会得到它两次。如果我再次刷新页面,我会得到事件3次。

我认为我正在将侦听器绑定到同一个全局eventEmitter。

我如何制作一个单独的本地eventListener来侦听全球eventEmiter的发射?

我知道如何设置eventEmiter:

代码语言:javascript
复制
var events = require('events');
var ee = new events.EventEmitter();

ee.on('someEvent',function(){console.log('hello');});

但它不能捕捉到另一个事件..。

我还尝试过使用eventEmitter复制模块

代码语言:javascript
复制
var ee = G.X;
ee.on('someEvent',function() { console.log('hello'); });

但它仍然会收到一个事件的倍数。

代码语言:javascript
复制
hello
hello
hello
EN

回答 1

Stack Overflow用户

发布于 2014-10-20 12:13:51

这个问题很久以前就有人问过了,但我的回答是这样的,因为现在还没有答案。

侦听套接字对象的“关闭”事件,然后删除对全局的回调。所以看起来是:

代码语言:javascript
复制
X.addListener("someEvent", callback);

X.on("someEvent", function(socket){
  socket.on("close", function(){
    X.removeListener("someEvent", callback);
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23209072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档