node.js事件发射器绑定到多个实例

时间:2012-02-24 02:09:17

标签: events node.js eventemitter

如果我有一个监听事件发射器的类,那么在每个实例上绑定是不正确的做法?

function MyClass() {

    emitter.on('ready', function() {
    // do something
    });

}

myclass = new MyClass();

如果我多次调用emitter.on(),它会警告我。

  

(节点)警告:检测到可能的EventEmitter内存泄漏。 11   听众补充道。使用emitter.setMaxListeners()来增加限制。

事件发射器是否意味着每个模块只绑定一次,在类实例之外?

如果这是错误的,那么在触发事件时如何访问类实例?

由于

1 个答案:

答案 0 :(得分:3)

警告是您附加的11事件会侦听单个事件发射器上的ready事件。

通常,当您在单个事件发射器上多次收听同一事件时,很可能是一个错误。例如,假设你有一个http事件发射器,如果你在request事件上监听11次可能是一个bug,你只想听一次请求。

这是一个调试工具。你可以通过

解决这个问题

emitter.setMaxListeners(500); // or whatever you think is a sensible limit