3

このコードでリスナーを削除しようとしています:

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

var emitter = new EventEmitter;

emitter.on('message', function(text)
{
        console.log(text);
});

setInterval(function()
{
        emitter.emit('message', Date.now());
}, 300);

setTimeout(function()
{
        emitter.removeListener('message', function()
        {
                console.log('removing "message" listener');
        });
}, 1000);

それは間隔を壊しません、私のノードバージョン:v0.8.11

ドキュメントを読んで大丈夫だと思います:http: //nodejs.org/api/events.html#events_emitter_removelistener_event_listener

4

1 に答える 1

19

同じ関数をに渡す必要があるremoveListenerため、この場合、無名関数を使用することはできません。

動作するバージョンは次のとおりです。

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

var emitter = new EventEmitter;

function listener(text) {
  console.log(text);
}

emitter.on('message', listener);

setInterval(function() {
  emitter.emit('message', Date.now());
}, 300);

setTimeout(function() {
  console.log("removing");
  emitter.removeListener('message', listener);
}, 1000);
于 2013-02-25T23:11:11.290 に答える