[英]Unbinding events in Node.js
我們以stdin.on
為例。 回調到stdin.on
堆棧,所以如果我寫(在 CoffeeScript 中)
stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
然后每次我在提示下按回車時,我都會得到
One
Two
我的問題是,有沒有辦法刪除/替換綁定后的回調? 或者是綁定代理回調並自己管理狀態的唯一方法?
您可以使用removeListener(eventType, callback)
來刪除事件,該事件應該適用於所有類型的發射器。
API 文檔中的示例:
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
所以你需要有一個變量來保存對回調的引用,因為顯然,否則不可能知道你想要刪除哪個回調。
編輯
在CS中應該是這樣的人:
stdin = process.openStdin()
stdin.setEncoding 'utf8'
logger = (input) -> console.log 'One'
stdin.on 'data', logger
stdin.removeListener 'data', logger
stdin.on 'data', (input) -> console.log 'Two'
請參閱: http : //nodejs.org/docs/latest/api/events.html#emitter.removeListener
或者你可以使用:
stdin.once
而不是stdin.on
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.