본문 바로가기
개발정리 (nodeJS)

[nodeJS] 자주 사용하는 Node.js 패턴 정리 3 (이벤트 에미터 패턴)

by 할리갈리0 2023. 6. 23.

1. 이벤트 에미터 패턴(Event Emitter Pattern) 

이벤트 발생과 이벤트 리스너 등록, 그리고 이벤트 전달까지 프로그래밍 방식을 통해 처리하는 방법

이벤트 에미터란, 이벤트 발생 및 전달을 위한 기능을 제공하는 객체

이벤트 에미터 객체는 이벤트 목록을 관리하며, 등록된 이벤트 리스너들에게 이벤트 발생 시 적절한 처리 요청

 

2. 이벤트 에미터 패턴 사용하기

Node.js는 내장된 events 모듈을 통해 이벤트 에미터 패턴 지원
EventEmitter 객체를 생성하여 사용

 

2-1. 이벤트 발생

const EventEmitter = require('events');

// 이벤트 핸들러 선언
const myEmitter = new EventEmitter();

// 'my-event' 이벤트 등록
myEmitter.on('my-event', () => {
  console.log('My event occurred.');
});

// 이벤트 발생
myEmitter.emit('my-event');

 

2-2. 이벤트 리스너 등록

on() 메소드를 사용하여 이벤트 리스너를 등록

이벤트 발생 시 등록된 이벤트 핸들러가 실행되며, 해당 이벤트에 필요한 인자를 함께 전달 가능

myEmitter.on('other-event', (a, b) => {
  console.log(`Other event occurred with two arguments: ${a}, ${b}.`);
});
// 이벤트 발생
myEmitter.emit('other-event', 'hello', 'world');

 

2-3. 이벤트 핸들러 제거

removeListener() 메소드를 사용하여 이벤트 핸들러 제거

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

const listener = () => {
  console.log('This listener will be removed after calling once.');
};

// 'remove-listener' 이벤트 리스너 등록
myEmitter.on('remove-listener', listener); 

// 이벤트 핸들러 호출
myEmitter.emit('remove-listener'); 

// 'remove-listener' 이벤트 리스너 제거
myEmitter.removeListener('remove-listener', listener); 

// 제거된 이벤트 핸들러 호출
myEmitter.emit('remove-listener');

 

반응형