【问题标题】:Node.js Cluster Worker: Turn off eventNode.js Cluster Worker:关闭事件
【发布时间】:2017-12-29 13:55:49
【问题描述】:

考虑以下node.js 集群配置。如何一转off 回调以防止进一步的消息回调?碰巧没有off 方法。我必须用一个新的回调来更新回调,似乎所有旧的回调都被触发了。

     cluster.on('fork', worker => {
        worker.on('message', msg => {// Do something...})
      })

【问题讨论】:

    标签: node.js node-cluster


    【解决方案1】:

    .on() 的反义词是.removeListener(),因为.on() 只是.addListener() 的别名。为什么他们添加了.on() 作为别名,但没有添加.off() 作为别名,我真的不知道(对我来说似乎合乎逻辑)。

    但是,为了能够使用removeListener() 删除单个侦听器,您需要为最初附加的函数提供函数引用。所以,你需要保存:

     cluster.on('fork', worker => {
         function msgHandler(msg) {
             // process message
         }
    
         // add event handler
         worker.on('message', msgHandler);
    
         // then, sometime later, to remove the event handler
         worker.removeListener('message', msgHandler);
     });
    

    如果您只想删除给定事件的所有事件侦听器,则不必保存以前的函数引用:

     cluster.on('fork', worker => {
         worker.on('message', msg => {// Do something...})
    
         // some time later, remove all listeners for a particular message
         worker.removeAllListeners('message');
     });
    

    相关回答:What is the difference between addListener(event, listener) and on(event, listener) method in node.js?

    【讨论】:

    • @anshulkoka - 这能回答你的问题吗?如果是这样,您可以通过单击答案左侧的绿色复选标记向社区表明这一点,这也将为您赢得一些声誉积分。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 2021-11-27
      • 2016-05-20
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2017-12-02
      • 2018-06-14
      • 1970-01-01
      相关资源
      最近更新 更多