Привязка генераторов событий node.js к нескольким экземплярам

Если у меня есть класс, который прослушивает эмиттеры событий, является ли неправильной практика привязки к каждому экземпляру?

function MyClass() {

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

}

myclass = new MyClass();

Если я вызываю emitter.on() несколько раз, он предупреждает меня.

(узел) предупреждение: обнаружена возможная утечка памяти EventEmitter. Добавлено 11 слушателей. Используйте emitter.setMaxListeners(), чтобы увеличить лимит.

Предполагается ли, что эмиттеры событий будут привязаны только один раз к модулю, за пределами экземпляров класса?

Если это неправильно, то как мне получить доступ к экземпляру класса при запуске событий?

Спасибо


person Tim    schedule 24.02.2012    source источник


Ответы (1)


Предупреждение заключается в том, что вы присоединяете 11 прослушивателей событий к событию ready на одном генераторе событий.

Как правило, когда вы прослушиваете одно и то же событие несколько раз в одном генераторе событий, скорее всего, это ошибка. Например, скажем, у вас есть генератор событий http, если вы прослушиваете событие request 11 раз, это, вероятно, ошибка, вы хотите прослушать и обработать запрос только один раз.

Это инструмент отладки. Вы можете обойти это, выполнив

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

person Raynos    schedule 24.02.2012
comment
Поздно на вечеринку, но стоит также отметить, что setMaxListeners(0) полностью отключает предупреждение. - person qubyte; 09.01.2013
comment
Это то же самое, что и setMaxListeners(Infinity) - person Raynos; 10.01.2013