node.js удалить прослушиватель событий не работает - PullRequest
0 голосов
/ 14 мая 2011

Я пытаюсь удалить некоторый EventListener, как это:

    var callback = function () {
      someFun(someobj)
    }

    console.log(callback)

    e.once("5", callback);

    uponSomeOtherStuffHappening('',
    function() {
      console.log(e.listeners("5")[0])
      e.removeListener(inTurns, callback)
    })

Но это не работает.

Первый журнал консоли показывает:

[Function]

Второй показывает:

[Function: g]

Почему они разные?

1 Ответ

1 голос
/ 14 мая 2011

Реализация Once () вставляет функцию g () для удаления вашего слушателя после одного вызова.

Из events.js:

EventEmitter.prototype.once = function(type, listener) {
  if ('function' !== typeof listener) {
    throw new Error('.once only takes instances of Function');
  }

  var self = this;
  function g() {
    self.removeListener(type, g);
    listener.apply(this, arguments);
  };

  g.listener = listener;
  self.on(type, g);

  return this;
};

Итак, если бы вы сделали это:

console.log(e.listeners("5")[0].listener);

они были бы одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...