본문 바로가기

Programming/Node.js

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

node js logo image

 

 

 

 

노드에서의 이벤트는, 제대로 배운 것은 아니지만 스트림 아티클에서 자연스럽게 사용했습니다. 

 

 

 

 

4. Node 기능 살펴보기 (7) - 버퍼와 스트림 2

앞선 아티클에서 Buffer 클래스를 사용한 예제를 확인했습니다. 이제 Buffer 클래스의 사용법을 조금 더 자세히 살펴보도록 하겠습니다.  const buffer = Buffer.from('버퍼로 변환할 문자열입니다.');consol

nozeroslope.tistory.com

 

 

이를테면 on('data', callback) 형태나 on('end', callback)과 같은 방식이었죠. 이는 곧 data / end라는 "이벤트"가 발생했을 때 콜백 함수를 실행하도록 이벤트를 등록한 리스너의 개념인 것입니다. createStreamd의 경우에는 data나 end라는 이벤트 자체를 알아서 호출 했습니다. 반대로 이러한 이벤트를 사용자가 직접 만들수도 있죠.

 

이제 아래 예제에서 events 모듈을 사용해 이벤트를 관리하는 방식을 살펴보도록 하겠습니다.

 

 

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
*/

 

 

위 예제를 보면 대략 이벤트 관련 메서드들의 용도는 이해가 가실 것입니다. 다음 아티클에서 좀 더 자세히 알아보도록 하겠습니다.