Node.js Cluster Worker:关闭事件

Ans*_*oka 2 node.js node-cluster

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

     cluster.on('fork', worker => {
        worker.on('message', msg => {// Do something...})
      })
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

的相反.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);
 });
Run Code Online (Sandbox Code Playgroud)

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

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

     // some time later, remove all listeners for a particular message
     worker.removeAllListeners('message');
 });
Run Code Online (Sandbox Code Playgroud)

相关回答:node.js 中的 addListener(event, listener) 和 on(event, listener) 方法有什么区别?