如何从node.js中的回调函数中删除侦听器

时间:2014-08-06 17:38:53

标签: node.js callback eventemitter

我为事件发射器设置了一个监听器,我想要做的是在我得到某些事件时删除同一个监听器。我遇到的问题是我不知道如何将回调函数传递给回调函数中的removeListener。我试过了#34;这个",但它错了。有没有办法实现这个目标?顺便说一下,我没有使用过一次,因为我只是在某个事件中移除了听众。

P.S。我在这里使用redis,所以无论我收到什么消息,我都会一直在听关键消息"。不可能只听不同的键。频道也不会有帮助,因为我只想删除一个特定的监听器。

另外,我想要做的是两个完全独立的过程之间的沟通。没有任何层次结构。在进程B中,有许多独立的函数将从进程A获取数据。我最初的想法是使用消息队列,但是我想不出一种方法来确保B中的每个函数都能从A获得正确的数据。

1 个答案:

答案 0 :(得分:2)

关于闭包的一个很酷的事情是你可以为它们指定一个名称,该名称可以由函数在内部使用。我没有测试过这个,但你应该尝试:

object.on('event', function handler() {
    // do stuff
    object.off('event', handler);
});

您还应该查看您的事件发射器是否支持名称空间。那会让你做类似的事情:

object.on('event.namespace', function() {
    // do stuff
    object.off('.namespace');
});