■ Front-End ■/Node.js

[Node.js] process에 이벤트를 생성하고 호출해 보자.

한길(One Way) 2023. 2. 26.
Node.js는 빠르고 쉬우며 확장 가능한 JavaScript 런타임이다.

 

1. 개요

이번에는 process 객체에 이벤트를 생성하고 강제로 호출해 보는 예제를 진행해 본다.

2. 설명

Node.js는 이벤트를 비동기 방식으로 처리한다. 이벤트를 처리하는 EventEmitter가 만들어져 있다. 노드 객체는 EventEmitter를 상속받을 수 있고 상속받은 후에는 EventEmitter 객체의 on()과 emit() 메서드를 사용할 수 있다.

process 객체는 이벤트를 핸들링하는 EventEmitter의 인스턴스이다. EventEmitter를 상속받아서 process 객체에 이벤트를 생성하고 호출할 수가 있다. 이벤트를 생성할 때 on()과 once() 함수를 사용하여 만든다. on()으로 생성한 이벤트는 제거하기 전까지 계속 사용 가능한데 반해 once()로 생성한 이벤트는 한번 사용되면 제거된다. emit() 메서드는 이벤트를 다른 쪽으로 전달하고 싶을 때 사용한다.

3. 예제

아래는 전체 코드이다.

/** process : instance of EventEmitter */

process.on('myEvent1', function() {
	console.log('myEvent1 호출');
});

process.emit('myEvent1');
process.emit('myEvent1');
process.emit('myEvent1');

process.once('myEvent2', function() {
	console.log('myEvent2 호출');
});

process.emit('myEvent2');
process.emit('myEvent2');
process.emit('myEvent2');

var exitEvent = function() {
	console.log("exitEvent 호출");
};

setTimeout(function() {
	console.log('1초 후에 시스템 종료');
	process.on('exit', exitEvent);
}, 1000);

실행 결과

myEvent1 이벤트는 on() 메서드로 생성하여 호출할 때마다 계속 로그를 표시한다. 반면 myEvent2 이벤트는 once() 메서드로 생성하여 한번 호출되고 나서 이후에는 반응을 하지 않는다.

myEvent1 호출
myEvent1 호출
myEvent1 호출
myEvent2 호출
1초 후에 시스템 종료
exitEvent 호출

 

728x90

댓글