让我们来 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归因
不隶属于 StackOverflow
scroll top