node.jsのバインディングイベント
-
29-09-2019 - |
質問
取ってみましょう 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
私の質問は、バインドされた後にコールバックを削除/交換する方法はありますか?それとも、プロキシコールバックをバインドしてStateを自分で管理する唯一のアプローチですか?
解決
使用できます 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
所属していません StackOverflow