2017-07-24 87 views
1

請考慮以下node.js羣集配置。如何將回調函數off阻止進一步消息回調?碰巧沒有off方法。我必須更新一個新的回調,看來所有舊的回調也被觸發。Node.js羣集工作者:關閉事件

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

回答

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

相關答案:What is the difference between addListener(event, listener) and on(event, listener) method in node.js?

+0

@anshulkoka - 這是回答您的問題嗎?如果是這樣,您可以通過點擊答案左側的綠色複選標記來向社區表明這一點,這也會爲您贏得一些聲望點。 – jfriend00