2

如果我有一个监听事件发射器的类,那么绑定每个实例是错误的做法吗?

function MyClass() {

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

}

myclass = new MyClass();

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

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

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

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

谢谢

4

1 回答 1

3

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

通常,当您在单个事件发射器上多次收听同一事件时,这很可能是一个错误。例如,假设您有一个 http 事件发射器,如果您侦听该request事件 11 次这可能是一个错误,那么您只想侦听和处理一次请求。

这是一个调试工具。你可以通过这样做来解决这个问题

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

于 2012-02-24T02:22:41.880 回答