이벤트 기반 아키텍처 in Node.JS; Event-Driven Architecture (EDA)

sunghoon·2025년 3월 22일
0

2.0 Glove Project

목록 보기
26/40

소스코드 - https://github.com/tony96kimsh/muffler

EDA 용어 차이
이벤트 발생 = 함수 호출
리스너 = 이벤트의 콜백함수
핸들러 = 콜백함수(이벤트)의 객체

Event-Driven Architecture (EDA) 개요

이벤트 기반: 이벤트의 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임

  • createReadStream 같은 경우는 내부적으로 알아서 data와 end 이벤트를 호출하나, 직접 이벤트 생성 가능

이벤트와 콜백 등록/호출_event1.js

// 등륵
const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();

// 콜백 등록
myEventEmitter.addListener('event1', () => {
    console.log('text1');
});

// 호출
myEventEmitter.emit('event1');
  • Emit(내뿜다.): produce and discharge (something, especially gas or radiation).
  • 객체와 인스턴스 차이 : 객체는 클래스로 생성된 것들을 지칭하고 하나하나를 인스턴스라 한다.

events 등록

const EventEmitter = require('events');

const myEventEmitter = new EventEmitter();
  • require('events'): 모듈은 이벤트 기반 프로그래밍을 위한 기능을 제공

콜백 등록

myEventEmitter.addListener('event1', () => {
    console.log('text1');
});
  • addListener(eventName, callback): 특정 이벤트('event1')가 발생했을 때 실행할 함수를 등록하는 메서드

호출

myEventEmitter.emit('event1');
  • emit(eventName): 등록된 이벤트를 실행

이벤트 메소드

event2.js

myEvent.on('eventOn', () => {
    console.log('callback of eventOn')
})
myEvent.once('eventOnce', () => {
    console.log('callback of eventOnce')
})

// remove
myEvent.removeAllListeners('eventOn')
myEvent.emit('eventOn')

on(eventName, callback)

이벤트 리스너 등록 함수로서 addListener()와 동일하나 짧고 직관적이라 주로 사용함

once(eventName, callback)

최초 실행 후 자동으로 제거되는 리스너 등록 함수

removeAllListeners(eventName)

등록된 모든 이벤트 리스너 제거

event3.js

// 리스너 카운팅 함수 정의
const showLs = e => {
    console.log(myEvent.listenerCount(e));
}

// register
myEvent.on('eventOn1', ls1);
myEvent.on('eventOn2', ls2);

// Run
showLs('eventOn1');
showLs('eventOn2');

// remove
myEvent.removeListener('eventOn1', ls1);
myEvent.off('eventOn2', ls2);

listenerCount(eventName)

이벤트에 등록된 리스너의 개수를 반환하는 함수

removeListener(eventName, listener)

이벤트의 정의한 리스너를 제거

off(eventName, listener)

removeListener()와 같은 역할을 하지만, Node.js v10 이상에서 사용 가능

Refference

profile
프라다 신은 빈지노와 쿠페를 타는 꿈을 꿨다.

0개의 댓글