Node.js群集辅助角色:关闭事件



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

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

.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');
});

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

您可以使用 removeListener 方法。 https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener

相关内容

最新更新