Node.js群集工作者:closures事件
考虑以下的node.js
集群configuration。 如何off
callback以防止进一步的消息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)方法有什么不同?
你可以使用removeListener方法。 https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener