請考慮以下node.js
羣集配置。如何將回調函數off
阻止進一步消息回調?碰巧沒有off
方法。我必須更新一個新的回調,看來所有舊的回調也被觸發。Node.js羣集工作者:關閉事件
cluster.on('fork', worker => {
worker.on('message', msg => {// Do something...})
})
請考慮以下node.js
羣集配置。如何將回調函數off
阻止進一步消息回調?碰巧沒有off
方法。我必須更新一個新的回調,看來所有舊的回調也被觸發。Node.js羣集工作者:關閉事件
cluster.on('fork', worker => {
worker.on('message', msg => {// Do something...})
})
您可以使用removeListener方法。 https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener
的.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');
});
@anshulkoka - 這是回答您的問題嗎?如果是這樣,您可以通過點擊答案左側的綠色複選標記來向社區表明這一點,這也會爲您贏得一些聲望點。 – jfriend00