node.js에서는 이벤트를 처리할 때 'events'모듈을 사용합니다.
'events'모듈의 'EventEmitter'객체를 사용하면 이벤트와 이벤트 헨들러를 연동시킬 수 있습니다.
EventEmitter를 이용해서 이벤트가 발생할 때 일어나는콜백함수를 만들어보겠습니다.
먼저, require함수를 이용해서 'events'모듈을 불러와주세요.
그리고 이 모듈을 이용하여 'EventEmitter'객체를 로드해주세요.
1. on 메소드
: 이벤트 핸들러를 설정하는 메소드. addListner 메소드도 동일하게 이벤트를 생성해주는데, 보통은 더 짧은 on메소드를 많이 씁니다.
2. emit 메소드
: 이벤트를 발생시티는 메소드. 이번에는 테스트를 하기위해서 이벤트를 강제로 발생시켜서 emit메소드를 사용합니다. 그러나 일반적으로 코어모듈에 존재하는 EventEmitter 객체를 사용하는 경우에는 Node가 자동으로 이벤트를 발생시켜주기때문에 잘 사용하지 않습니다.
const EventEmitter = require('events');
const emitterTest = new EventEmitter();
emitterTest.on('test', () => {
console.log('Emitter is working...')
});
emitterTest.emit('test');
3. off 메소드
:이벤트 핸들러를 제거하는 메소드. off메소드를 쓸 계획이 있다면 제거할 이벤트 핸들러를 미리 변수에 할당해주어야합니다.
왜냐하면 아래처럼 미리 할당해주지 않고 콜백함수에 이벤트 핸들러를 등록(on)하고, 삭제(off)하는 경우...
이벤트 핸들러가 지워지지 않아서 터미널에 'Emitter is working..'이 출력된 걸 볼 수 있습니다. 그 이유는 첫번째 빨간박스가 쳐진 이벤트 핸들러와 두번째 빨간박스친 이벤트 핸들러가 서로 다른 함수이기 때문입니다. 서로 똑같이 생겼지만 node.js가 다른 함수로 인식하기 때문에 off메소가 이벤트 핸들러를 참조할 수 있게 하려면 따로 변수에 할당해 주어야합니다.
4. once 메소드
:이벤트 핸들러를 등록하는 메소드로, on 메소드와는 다르게 이벤트 호출을 딱 한번 만 할 수 있습니다.
아래 예시에서 처럼 여러번 호출해도 콘솔에는 딱 한번 만 찍힙니다.
'지금, 개발하기 > Node.js' 카테고리의 다른 글
node.js] 개발 용도로만 필요한 패키지들 관리? (0) | 2022.08.02 |
---|---|
node.js] url 모듈 사용하기 (0) | 2022.04.19 |
node.js] npm 명령어 퀴즈 (0) | 2022.01.13 |
동기실행 vs 비동기실행 (0) | 2021.10.21 |