2

eventListeners現在、以下を使用して作成しています。

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

具体的に知りたいのは、この特定のリスナーを一意の ID で識別して、個別に参照できるかどうかです。

eventListenerいつでもこのオープンの複数のインスタンスが存在する可能性があり、この ID を参照する特定のデータ イベントの受信に基づいてそれらを削除できるようにしたいと考えています。今の問題は、個人を特定する方法がわからないということeventListenersです。

ありがとう!

4

1 に答える 1

3

いつでもリスナー関数を変数に保存し、次のように追加または削除できます。

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 が得られます。そのスコープでは、スコープに基づいてリスナーを削除できます。

于 2013-07-01T10:11:56.053 に答える