2012-10-15 28 views
2

我使用的是目前正在创建事件侦听器以下:独特EventListener的ID在Node.js的

client.on('data', function(data){ 
    // Lots of other functions etc.. 
}); 

我想具体知道,是否有可能通过一个唯一的ID来标识这个特定的侦听器,我可以单独参考它?

可能随时打开此eventListener的多个实例,我希望能够根据接收到将引用此ID的特定数据事件将其删除。现在的问题是,我不知道如何识别单个事件监听器。

谢谢!通过具有指的是监听功能监听变量

var EventEmitter = require('events').EventEmitter 
    emitter  = new EventEmitter(); 

var addListener = function(id){ 
    var listener = function(){ 
    console.log("Listener", id); 
    emitter.removeListener("test", listener); 
    } 
    emitter.on("test", listener); 
} 

addListener("a"); 
addListener("b"); 

emitter.emit("test"); 
// Listener a 
// Listener b 

有了这个,你有一个唯一的ID:

回答

2

您可以随时侦听器函数存储到变量以及添加或删除像这样。在该范围内,您可以根据范围删除侦听器。

+0

每次事件触发时,创建和销毁事件侦听器的开销是多少?有些事件可能非常普遍(25ms在我的一个应用程序中似乎是合理的)。 –