考虑以下node.js
群集配置。如何转换off
回调以防止进一步的消息回调?恰好没有off
方法。我必须使用新的回调来更新回调,并且似乎所有旧的回调都被触发。
cluster.on('fork', worker => {
worker.on('message', msg => {// Do something...})
})
答案 0 :(得分:2)
与.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');
});
答案 1 :(得分:0)
您可以使用removeListener方法。 https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener