[Node.JS] 나만의 이벤트 만들기

진실·2021년 7월 3일
0

이벤트 만들기

const EventEmitter = require('events'); 

const myEvent = new EventEmitter();
// myEvent 객체 생성

myEvent.addListener('event1', ()=>{
  console.log('이벤트1');
});
// myEvent 객체의 event1 이벤트에 대한 리스너 생성

myEvent.on('event2', ()=>{
  console.log('이벤트2');
});
// myEvent 객체의 event2 이벤트에 대한 리스너 생성
myEvent.on('event2', ()=>{
  console.log('이벤트2 추가');
});
// myEvent 객체의 event2 이벤트에 대한 리스너 추가

myEvent.once('event3', ()=>{
  console.log('이벤트3');
});
// myEvent 객체의 event3 이벤트에 대한 리스너 생성. 이벤트는 한번만 호출

myEvent.emit('event1');
myEvent.emit('event2');
myEvent.emit('event3');
// 이벤트 호출
myEvent.emit('event3');
// event3은 once 이벤트이므로 이는 실행 안됨

myEvent.on('event4',()=>{
  console.log('이벤트4');
});
// event4에 대한 리스너 생성

myEvent.removeAllListeners('event4');
// event4에 대한 모든 리스너 삭제

const listener = ()=>{
  console.log('이벤트5');
};
// 리스너 생성

myEvent.on('event5', listener);
// event5에 대한 리스너로 listenr를 사용
myEvent.removeListener('event5', listener);
// event5에 연결된 listenr라는 리스너 삭제
myEvent.emit('event5');
// event5에 연결된 유일한 리스너를 삭제했으므로 실행 안됨

console.log(myEvent.listenerCount('event2'));
// event2에 연결된 리스너의 개수

위 코드의 수행 결과는 아래와 같습니다.

이벤트1
이벤트2
이벤트2 추가
이벤트3
2

event 객체는 다음과 같은 메서드를 가지고 있습니다.

  • myEvent.on(이벤트, 콜백) : 이벤트와 콜백을 연결
  • myEvent.addListenr(이벤트, 콜백) : on과 같음
  • myEvent.emit(이벤트) : 이벤트에 대한 리스너 호출
  • myEvent.once(이벤트, 콜백) : 이벤트가 한번만 실행됨
  • myEvent.removeAllListeners(이벤트, 콜백) : 이벤트에 연결된 모든 콜백 제거
  • myEvent.removeListenr(이벤트, 콜백) : 이벤트에 연결된 해당 콜백 제거
  • myEvent.off(이벤트, 콜백) : removeListener와 같음
  • myEvent.listenerCount(이벤트) : 이벤트에 연결된 리스너의 개수

이 포스팅의 예시 코드는 Node.js교과서(조현영, 길벗)에서 발췌했습니다.

profile
반갑습니다.

0개의 댓글