3.7 이벤트 이해하기
포스트
취소

3.7 이벤트 이해하기

기존 블로그에 작성했던 포스트를 이전한 글입니다.

해당 포스트는 NODEJS를 학습하며 정리한 내용에 대한 포스트입니다.




🌈 이벤트 이해하기

💻 이벤트 만들고 호출하기

🔻 event.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const EventEmitter = require('events');

const myEvent = new EventEmitter();
myEvent.addListener('event1', () => {
  console.log('이벤트 1');
});
myEvent.on('event2', () => {
  console.log('이벤트 2');
});
myEvent.on('event2', () => {
  console.log('이벤트 2 추가');
});
myEvent.once('event3', () => {
  console.log('이벤트 3');
}); // 한 번만 실행됨

myEvent.emit('event1'); // 이벤트 호출
myEvent.emit('event2'); // 이벤트 호출

myEvent.emit('event3');
myEvent.emit('event3'); // 실행 안 됨

myEvent.on('event4', () => {
  console.log('이벤트 4');
});
myEvent.removeAllListeners('event4');
myEvent.emit('event4'); // 실행 안 됨

const listener = () => {
  console.log('이벤트 5');
};
myEvent.on('event5', listener);
myEvent.removeListener('event5', listener);
myEvent.emit('event5'); // 실행 안 됨

console.log(myEvent.listenerCount('event2'));


events 모듈로 커스텀 이벤트를 만들 수 있음

  • 스트림에 쓰였던 on(‘data’), on(‘end’) 등과 비교

  • on(이벤트명, 콜백)

    • 이벤트 이름과 이벤트 발생 시의 콜백을 연결

    • 이렇게 연결하는 동작을 이벤트 리스닝

    • event2처럼 이벤트 하나에 이벤트 여러 개를 달아줄 수도 있다.

  • addListener(이벤트명, 콜백)

    • on과 기능이 같다.
  • emit(이벤트명)

    • 이벤트를 호출하는 메서드

    • 이벤트 이름을 인자로 넣어주면 미리 등록해뒀던 이벤트 콜백이 실행

  • once(이벤트명, 콜백)
    • 한 번만 실행되는 이벤트

    • myEvent.emit(‘event3’)을 두 번 연속 호출했지만 콜백이 한 번만 실행

  • removeAllListeners(이벤트명)

    • 이벤트에 연결된 모든 이벤트 리스너를 제거

    • event4가 호출되기 전에 리스너를 제거했으므로 event4의 콜백은 호출되지 않는다.

  • removeListener(이벤트명, 리스너)

    • 이벤트에 연결된 리스너를 하나씩 제거

    • 역시* event5의 콜백도 호출되지 않는다.

  • off(이벤트명, 콜백)

    • 노드 10 버전에서 추가된 메서드로, removeListener와 기능이 같다.
  • listenerCount(이벤트명)

    • 현재 리스너가 몇 개 연결되어 있는지 확인




📚 레퍼런스

조현영. Node.js 교과서 = Node.js Textbook / 조현영 지음 (2022). Print.

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.