Node.js群集工作者:closures事件

考虑以下的node.js集群configuration。 如何offcallback以防止进一步的消息callback? 碰巧没有off方法。 我必须更新一个新的callback,看来所有的旧callback也被触发。

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

.on().removeListener().removeListener()因为.on()只是.on()的别名。 为什么他们添加.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'); }); 

相关答案node.js中的addListener(event,listener)和on(event,listener)方法有什么不同?