簡體   English   中英

在 Node.js 中解除綁定事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM