2012-02-24 5 views
2

이벤트 이미 터를 수신하는 클래스가있는 경우 모든 인스턴스에 바인딩하는 것은 잘못된 연습입니까?node.js 이벤트 이미 터가 여러 인스턴스에 바인딩

function MyClass() { 

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

} 

myclass = new MyClass(); 

emitter.on()을 여러 번 호출하면 경고 메시지가 표시됩니다.

(노드) 경고 : 가능 EventEmitter 메모리 누수가 발견되었습니다. 11 청취자가 추가되었습니다. emitter.setMaxListeners()를 사용하여 제한을 늘리십시오.

이벤트 이미 터는 클래스 인스턴스 외부에서 모듈 당 한 번만 바인딩됩니까?

이것이 잘못된 경우 이벤트가 트리거 될 때 클래스 인스턴스에 어떻게 액세스합니까? 당신은 하나의 이벤트 이미 터에 ready 이벤트 11 이벤트 listeneres를 부착하는 것을

감사

답변

3

경고입니다.

일반적으로 단일 이벤트 이미 터에서 동일한 이벤트를 여러 번 들으면 버그 일 가능성이 높습니다. 예를 들어, http 이벤트 이미 터가 있다고 가정하면 request 이벤트를 11 회 수신하면 아마 버그 일 뿐이며 요청을 한 번만 듣고 처리하려고합니다.

이것은 디버깅 도구입니다. 당신은

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

+1

감사 Raynos을 수행하여이 문제를 얻을 수 있습니다 내가 뭔가 잘못하고 있던 생각했다. – Tim

+0

파티에 늦지 만,'setMaxListeners (0)'가 경고를 모두 불가능하게한다는 점에 유의할 가치가있다. – qubyte

+0

'setMaxListeners (Infinity)'와 동일합니다. – Raynos