nodejs의 이벤트를 정의하는 함수를 만들 수 있다.
const EventEmitter = require('events'); // events 는 클래스 객체를 반환
const emitter = new EventEmitter();
const callback1 = (args) => {
console.log('first callback - ', args);
}
emitter.on('ellie', callback1);
emitter.on('ellie', (args) => {
console.log('second callback - ', args);
});
// 실행은 emit() 으로 정의된 이벤트 함수를 실행한다.
emitter.emit('ellie', { message: 1 });
emitter.removeListener('ellie', callback1);
emitter.emit('ellie', { message: 2 });
// 이벤트에 등록된 callback 함수를 제거하여 리소스 소모를 줄일 수 있다.
// 단 callback 함수로 따로 정의하여 사용해야 한다.
// -> removeListener('이벤트명', 콜벡함수명);
// -> removeAllListeners();
이러한 이벤트는 nodejs 자체적으로도 사용되어 지고 있으며 이를 바탕으로 API 이벤트가 정의되어져 있다.