質問

取ってみましょう 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top