event
- 특정 동작이 실행될 때 분기 처리 가능
- 스트림 ('data')('end')
- 이벤트가 발생하면 콜백 함수 실행
event in Node.js
- new EventEmitter()
- on VS emit
- event 삭제: removeAllListeners / removeListener
Call event in Node.js
- on (이벤트 이름, 콜백): 이벤트 발생 시 콜백 함수 실행. 이벤트 리스닝
- addListener (이벤트 이름, 콜백)
Create event in Node.js
- emit (이벤트 이름): 이벤트를 호출하는 함수
- once (이벤트 이름, 콜백): 이벤트를 한 번만 실행한다.
Remove event in Node.js
- removeAllListeners: 이벤트에 연결된 모든 이벤트 리스너를 제거한다.
- removeListener (이벤트 이름, 리스너): 이벤트에 연결된 리스너를 제거한다.
- off (이벤트 이름, 콜백): 이벤트 리스너를 제거한다. / Node v10에서 추가되었다.
- listenerCount (이벤트 이름): 현재 이벤트에 몇 개의 이벤트 리스너가 연결되었는지 확인할 수 있다.
이벤트 생성 및 호출
const EventEmitter = require('events');
const customEvent = new EventEmitter();
// addListener
customEvent.addListener('event1', () => {
console.log('첫 번째 이벤트가 발생했습니다.'); (1)
})
// on
customEvent.on('event2', () => {
console.log('두 번째 이벤트가 발생했습니다.'); (2)
})
// once
customEvent.once('event3', () => {
console.log('세 번째 이벤트가 발생했습니다.'); (3)
})
customEvent.emit('event1'); // (1) 첫 번째 이벤트가 발생했습니다.
customEvent.emit('event2'); // (2) 두 번째 이벤트가 발생했습니다.
customEvent.emit('event3'); // (3) 세 번째 이벤트가 발생했습니다. => 한 번만 출력
customEvent.emit('event3'); //
customEvent.emit('event3'); //
이벤트 제거
// removeAllListeners
customEvent.removeAllListeners('event1'); // 이벤트 실행 안 됨
const cb = () => {
console.log('첫 번째 이벤트가 발생했습니다.')
}
customEvent.addListener('event1', cb);
customEvent.emit('event1'); // 실행됨
// off / removeListener
customEvent.off('event1', cb); // 이벤트를 지우는 게 아니라 콜백 함수를 지움
customEvent.emit('event1'); // 실행 안 됨
이벤트리스너 카운트
const EventEmitter = require('events');
const customEvent = new EventEmitter();
const cb = () => {
console.log('첫 번째 이벤트가 발생했습니다.');
}
const cb1 = () => {
console.log('첫 번째 이벤트가 발생했습니다222');
}
custonEvent.addListener('event1', cb);
custonEvent.addListener('event1', cb1);
// listenerCount
const count = customEvent.listenerCount('event1');
console.log(count); // 2
'프론트엔드 개발 > Node.js' 카테고리의 다른 글
Web Server 기초. GET, POST, PUT, DELETE (Express 활용) (0) | 2023.02.07 |
---|---|
Stream, Pipe (0) | 2023.02.06 |
Buffer (0) | 2023.02.06 |