이어지는 글


NodeJS 이벤트 개수 제한

Node는 한가지 이벤트에 대해 10개가 넘는 이벤트 리스너를 등록하는 경우 잘못 등록한 것 이라고 판단하여 오류로 간주합니다.
var util = require('util');
var EventEmitter = require('events').EventEmitter;

var MyObj = function() {};

//EventEmitter 상속
util.inherits(MyObj, EventEmitter);

var myObj = new MyObj();

//아무것도 하지 않는 이벤트 리스너를 10개 넘게 등록
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});


(node:232) Warning: Possible EventEmitter memory leak detected. 11 customEvent listeners added. Use emitter.setMaxListeners() to increase limit


이벤트 개수 제한 해제
그러나 필요에 의해 의도적으로 10개가 넘는 이벤트 리스너를 등록해야할 때가 있을것입니다.
이럴때에는 이벤트 제한 개수를 설정 함으로써 해결 가능합니다.

이벤트를 가진 객체의 setMaxListeners(리스너제한개수) 를 통해 설정해줄 수 있습니다.
var util = require('util');
var EventEmitter = require('events').EventEmitter;

var MyObj = function() {};

//EventEmitter 상속
util.inherits(MyObj, EventEmitter);

var myObj = new MyObj();

myObj.setMaxListeners(20);

//아무것도 하지 않는 이벤트 리스너를 10개 넘게 등록
myObj.on('customEvent', function() {});
myObj.on('customEvent', function() {});
...20 개 까지 등록...


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!