프로그래밍/Node.js

[Node.js 강의 시리즈] 9강 - 이벤트 모듈 (events)

월횽 2024. 7. 4. 06:30
728x90
반응형
SMALL

Node.js의 이벤트 모듈인 events를 사용하여 이벤트를 생성하고 처리하며, 이벤트 리스너와 이벤트 발행에 대해 학습한다.

 

 

 

 

 

1. 이벤트 모듈(events) 소개

이벤트 모듈이란?

· Node.js의 events 모듈은 이벤트 기반 프로그래밍을 가능하게 한다.
· 이벤트 기반 프로그래밍은 특정 이벤트가 발생했을 때 이를 처리하는 방식으로 작동한다.

728x90

이벤트 모듈 불러오기

const EventEmitter = require('events');

 

 

 

 

 

 

2. 이벤트 생성 및 처리

EventEmitter 클래스

· events 모듈의 핵심 클래스는 EventEmitter이다.
· 이 클래스는 이벤트를 생성하고, 이벤트 리스너를 등록하며, 이벤트를 발행할 수 있다.

이벤트 생성 예제

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

// 이벤트 리스너 등록
eventEmitter.on('greet', () => {
  console.log('Hello, World!');
});

// 이벤트 발행
eventEmitter.emit('greet');

 

 

예제 설명

· eventEmitter.on('greet', callback)를 사용하여 greet 이벤트에 대한 리스너를 등록한다.
· eventEmitter.emit('greet')를 사용하여 greet 이벤트를 발행하면, 등록된 리스너가 실행된다.

 

 

 

 

3. 이벤트 리스너와 이벤트 발행

이벤트 리스너 등록

· on 메서드를 사용하여 이벤트 리스너를 등록한다.
· 여러 리스너를 등록할 수 있으며, 등록된 순서대로 실행된다.

예제: 여러 이벤트 리스너 등록

eventEmitter.on('greet', () => {
  console.log('Hello!');
});

eventEmitter.on('greet', () => {
  console.log('World!');
});

eventEmitter.emit('greet');
// 출력:
// Hello!
// World!

 

이벤트 발행

· emit 메서드를 사용하여 이벤트를 발행한다.
· 발행 시 이벤트 이름과 함께 전달할 데이터를 인자로 제공할 수 있다.

예제: 데이터와 함께 이벤트 발행

eventEmitter.on('sayHello', (name) => {
  console.log(`Hello, ${name}!`);
});

eventEmitter.emit('sayHello', 'Alice');
// 출력: Hello, Alice!

 

 

이벤트 리스너 제거

· removeListener 또는 off 메서드를 사용하여 이벤트 리스너를 제거할 수 있다.

예제: 이벤트 리스너 제거

반응형
const greet = () => {
  console.log('Hello, World!');
};

eventEmitter.on('greet', greet);
eventEmitter.removeListener('greet', greet);

eventEmitter.emit('greet'); // 출력 없음

 

 

실습: 이벤트 모듈 사용하기

 

1. 간단한 이벤트 시스템 구현

· 이벤트를 생성하고, 여러 개의 리스너를 등록한 후 이벤트를 발행해보세요.

예제

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

eventEmitter.on('event', () => {
  console.log('Event 1 triggered');
});

eventEmitter.on('event', () => {
  console.log('Event 2 triggered');
});

eventEmitter.emit('event');

 

 

2. 데이터와 함께 이벤트 발행

· 이벤트 발행 시 데이터를 전달하고, 이를 리스너에서 처리해보세요.

예제

eventEmitter.on('dataEvent', (data) => {
  console.log(`Received data: ${data}`);
});

eventEmitter.emit('dataEvent', 'This is some data');
// 출력: Received data: This is some data

 

3. 이벤트 리스너 제거

· 등록된 이벤트 리스너를 제거하고, 이벤트 발행 시 더 이상 실행되지 않도록 해보세요.

예제

const logMessage = (message) => {
  console.log(`Log: ${message}`);
};

eventEmitter.on('log', logMessage);
eventEmitter.emit('log', 'This is a message'); // 출력: Log: This is a message

eventEmitter.removeListener('log', logMessage);
eventEmitter.emit('log', 'This message will not be logged'); // 출력 없음

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

728x90
반응형
LIST