【问题标题】:how to remove listener from inside the callback function in node.js如何从node.js的回调函数中删除监听器
【发布时间】:2014-09-29 18:16:33
【问题描述】:

我为事件发射器设置了一个侦听器,我想做的是在收到某些事件时删除同一个侦听器。我遇到的问题是我不知道如何将回调函数传递给回调函数内部的 removeListener 。我试过“这个”,但它出错了。有没有办法做到这一点?顺便说一句,我没有使用一次,因为我只是删除某个事件的监听器。

附:我在这里使用redis,所以无论我收到什么消息,我都会一直在听关键的“消息”。只听不同的键是不可能的。 Channel 也无济于事,因为我只想删除特定的侦听器。

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

【问题讨论】:

    标签: node.js callback eventemitter


    【解决方案1】:

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

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

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

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

    【讨论】:

    • off方法从何而来?
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2014-11-18
    • 2016-01-23
    相关资源
    最近更新 更多