방법 설명:
지정된 이벤트에 대한 리스너를 등록합니다.
문법:
Emitter.on(이벤트, 리스너)
Emitter.addListener(이벤트, 리스너)
수신 매개변수:
이벤트(문자열) 이벤트 종류
리스너(함수) 이벤트 발생 시 콜백 함수
예:
server.on('연결', 함수(스트림) {
console.log('누군가 연결되었습니다!');
});
소스코드:
EventEmitter.prototype.addListener = 함수(유형, 리스너) {
변수 m;
if (!util.isFunction(리스너))
Throw TypeError('리스너는 함수여야 합니다.');
if (!this._events)
This._events = {};
// === "newListener"를 입력하는 경우 재귀를 방지하기 위해
// 리스너에 추가하고 먼저 "newListener"를 내보냅니다.
if (this._events.newListener)
This.emit('newListener', 유형,
util.isFunction(listener.listener) ?
Listener.listener : 청취자);
if (!this._events[유형])
// 하나의 리스너의 경우를 최적화합니다. 추가 배열 객체가 필요하지 않습니다.
This._events[type] = 청취자;
else if (util.isObject(this._events[type]))
// 이미 배열이 있으면 추가하면 됩니다.
This._events[유형].push(리스너);
그 외
// 두 번째 요소를 추가하면 배열로 변경해야 합니다.
This._events[유형] = [this._events[유형], 리스너];
// 리스너 누수 확인
if (util.isObject(this._events[type]) && !this._events[type].warned) {
변수 m;
If (!util.isUndefine(this._maxListeners)) {
m = this._maxListeners;
} 그 밖의 {
m = EventEmitter.defaultMaxListeners;
}
If (m && m > 0 && this._events[type].length > m) {
This._events[type].warned = true;
console.error('(노드) 경고: 가능한 EventEmitter 메모리 '
'누출이 감지되었습니다. %d명의 청취자가 추가되었습니다.'
'제한을 늘리려면 Emitter.setMaxListeners()를 사용하세요.',
This._events[type].length);
console.trace();
}
}
이것을 돌려주세요;
};