소스코드 - https://github.com/tony96kimsh/muffler

EDA 용어 차이
이벤트 발생 = 함수 호출
리스너 = 이벤트의 콜백함수
핸들러 = 콜백함수(이벤트)의 객체
이벤트 기반: 이벤트의 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임
createReadStream 같은 경우는 내부적으로 알아서 data와 end 이벤트를 호출하나, 직접 이벤트 생성 가능// 등륵
const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();
// 콜백 등록
myEventEmitter.addListener('event1', () => {
console.log('text1');
});
// 호출
myEventEmitter.emit('event1');
const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();
myEventEmitter.addListener('event1', () => {
console.log('text1');
});
addListener(eventName, callback): 특정 이벤트('event1')가 발생했을 때 실행할 함수를 등록하는 메서드myEventEmitter.emit('event1');
emit(eventName): 등록된 이벤트를 실행myEvent.on('eventOn', () => {
console.log('callback of eventOn')
})
myEvent.once('eventOnce', () => {
console.log('callback of eventOnce')
})
// remove
myEvent.removeAllListeners('eventOn')
myEvent.emit('eventOn')
이벤트 리스너 등록 함수로서 addListener()와 동일하나 짧고 직관적이라 주로 사용함
최초 실행 후 자동으로 제거되는 리스너 등록 함수
등록된 모든 이벤트 리스너 제거
// 리스너 카운팅 함수 정의
const showLs = e => {
console.log(myEvent.listenerCount(e));
}
// register
myEvent.on('eventOn1', ls1);
myEvent.on('eventOn2', ls2);
// Run
showLs('eventOn1');
showLs('eventOn2');
// remove
myEvent.removeListener('eventOn1', ls1);
myEvent.off('eventOn2', ls2);
이벤트에 등록된 리스너의 개수를 반환하는 함수
이벤트의 정의한 리스너를 제거
removeListener()와 같은 역할을 하지만, Node.js v10 이상에서 사용 가능