Node.js의 이벤트 모듈인 events를 사용하여 이벤트를 생성하고 처리하며, 이벤트 리스너와 이벤트 발행에 대해 학습한다.
1. 이벤트 모듈(events) 소개
이벤트 모듈이란?
· Node.js의 events 모듈은 이벤트 기반 프로그래밍을 가능하게 한다.
· 이벤트 기반 프로그래밍은 특정 이벤트가 발생했을 때 이를 처리하는 방식으로 작동한다.
이벤트 모듈 불러오기
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'); // 출력 없음
- 이전 수업 목록
'프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js 강의 시리즈] 11강 - NPM 패키지 설치 및 사용 (0) | 2024.07.08 |
---|---|
[Node.js 강의 시리즈] 10강 - NPM과 패키지 관리 (0) | 2024.07.05 |
[Node.js 강의 시리즈] 7강 - HTTP 모듈 (0) | 2024.07.02 |
[Node.js 강의 시리즈] 6강 - 파일 시스템 모듈 (fs) (0) | 2024.07.01 |
[Node.js 강의 시리즈] 5강 - Node.js의 비동기 처리 (0) | 2024.06.28 |