javascript - Node.js 中的解除绑定(bind)事件

标签 javascript node.js coffeescript dom-events

我们以 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

我的问题是,有没有办法在绑定(bind)后删除/替换回调?还是自己绑定(bind)代理回调和管理状态的唯一方法?

最佳答案

您可以使用 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

关于javascript - Node.js 中的解除绑定(bind)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4305175/

相关文章:

javascript - Chrome PDF 查看器下载按钮在 window.open() 选项卡上不起作用

javascript - 类在风格之前改变

javascript - 如何使用 jQuery 遍历 JSON 数组

node.js - 有没有办法从 Node.js 响应中过滤掉包含和脚本文件?

javascript - Socket.io - 旧版本的 app.js 到新版本的 socket.io

javascript - 动态表数量更新Javascript

javascript - Nodejs JavaScript 事件

backbone.js - 奇怪的生态模板行为

jquery - CSS 未检测到数据属性的更改

ruby-on-rails - 预编译 coffeescript 文件(Rails 4)