2012-10-15 33 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在我的一個應用程序中似乎是合理的)。 –