본문 바로가기

Programming/Node.js

4. Node 기능 살펴보기 (10) - 이벤트 이해하기 [2/2]

node js logo image

 

 

 

 

앞선 아티클에서 이벤트 관련 메서드 예제를 살펴보았습니다. 

 

 

 

4. Node 기능 살펴보기 (10) - 이벤트 이해하기 [1]

노드에서의 이벤트는, 제대로 배운 것은 아니지만 스트림 아티클에서 자연스럽게 사용했습니다.     4. Node 기능 살펴보기 (7) - 버퍼와 스트림 2앞선 아티클에서 Buffer 클래스를 사용한 예제를

nozeroslope.tistory.com

 

 

const EventEmitter = require('events');
const myEvent = new EventEmitter();

myEvent.addListener('EVENT1', () => {
    console.log('이벤트 1번');
});
myEvent.on('EVENT2', () => {
    console.log('이벤트 2번');
});
myEvent.on('EVENT2', () => {
    console.log('이벤트 2번 추가');
});
myEvent.once('EVENT3', () => {
    console.log('이벤트 3번');
});

myEvent.emit('EVENT1');
myEvent.emit('EVENT2');
myEvent.emit('EVENT3');
myEvent.emit('EVENT3');

myEvent.on('EVENT4', () => {
    console.log('이벤트 4번');
});
myEvent.removeAllListeners('EVENT4');
myEvent.emit('EVENT4');

const listener = () => {
    console.log('EVENT 5번');
}
myEvent.on('EVENT5', listener);
myEvent.removeListener('EVENT5', listener);
myEvent.emit('EVENT5');

console.log(myEvent.listenerCount('EVENT2'));

/* 출력
이벤트 1번
이벤트 2번
이벤트 2번 추가
이벤트 3번
2
*/

 

 

각각의 메서드에 대한 설명을 살펴보겠습니다. 

 

  • on(이벤트, callback) : 이벤트 리스닝 동작으로 - 즉, 이벤트의 이름과 이벤트 발생 시 실행할 콜백을 연결하는 동작을 의미합니다. 이벤트 하나에 여러 개의 이벤트를 연결하는 것도 가능합니다. 
  • addListener(이벤트, callback) : on과 동일한 기능을 의미합니다. 
  • emit(이벤트) : 이벤트를 호출합니다. 여기에 등록했던 이벤트 이름을 인자로 전달해 실행하면, 해당 리스너에 등록된 콜백이 실행됩니다. 
  • once(이벤트, callback) : 한 번만 실행되는 이벤트입니다. 예제에서 'EVENT3'의 경우 두 번 실행했지만 실제로 콜백 실행은 한 번만 이루어졌습니다. 
  • removeAllListeners(이벤트) : 이벤트에 연결된 모든 이벤트 리스너를 제거합니다. 'EVENT4'가 제거된 이후에 실행되지 않은 것을 확인할 수 있습니다. 
  • removeListener(이벤트, 리스너) : 이벤트에 연결된 리스너를 하나씩 제거하는데, 리스너를 명기하는 것을 주의합시다. 'EVENT5' 예제를 확인하세요.
  • off(이벤트, callback) : 노드 10 버전에서 추가된 메서드로, removeListener와 같은 기능입니다. 
  • listenerCount(이벤트) : 현재 리스너가 연결된 개수를 출력합니다.