Front-End/Node.js

[Node.js] 4. 이벤트 루프(Event Loop)

nanee_ 2021. 10. 26. 11:49
728x90
반응형
SMALL

이벤트 루프 (Event Loop)

: node.js 는 서버가 가동되면 변수들을 초기화하고 함수를 선언하고 이벤트가 발생할 때까지 기다린다.

이벤트가 감지되면 callback 함수를 호출한다.

 

events 모듈

: 이벤트 위주의 프로그램을 작성할 때 사용하는 모듈이다.

 

- 메소드

on() : 지정한 이벤트의 리스너를 추가한다.

once() : 지정한 이벤트의 리스너를 추가하지만 한 번 실행된 이후에는 자동으로 제거된다.

removelistener() : 지정한 이벤트에 대한 리스너를 제거한다.

emit() : 지정한 이벤트를 발생시킨다.

 

 

예제코드 

const events = require('events');

// 이벤트 관련 메소드를 사용할 수 있는 EventEmitter 객체 생성
const eventEmitter = new events.EventEmitter();

const connectHandler = function connected() { // 실행 순서 - 2
    console.log('연결 성공!');
    eventEmitter.emit('data_received'); // 호출
}

// connection 이벤트와 connectHandler 핸들러와 연결
eventEmitter.on('connection', connectHandler); // (이벤트, 호출)

// data_receive 이벤트와 익명함수와 연결
eventEmitter.on('data_received', () => {
    console.log('데이터 수신!');
});

eventEmitter.emit('connection'); // 실행 순서 - 1

console.log('프로그램을 종료합니다.');

 

1. eventEmitter.emit('connection') 으로 connectioin이라는 이벤트를 실행시킨다.

 

2. eventEmitter.on('connection', connectHandler) 으로

connection 이벤트를 실행하면  connectionHandler를 호출하도록 한다.

 

3. connectionHandler 가 호출되어서 connected 함수가 실행된다.

console창에 메세지를 남기고,

eventEmitter.emit('data_received')로 데이터를 불러오는 이벤트를 실행한다.

 

4.  eventEmitter.on('data_received',()=>{}) 로 data_received 이벤트가 실행되면 

익명함수 안의 명령어들이 실행된다.

 

5. 모든 코드들이 실행되고 console창에 프로그램 종료를 알리는 메세지를 띄운다.

 

위와 같은 과정을 거쳐서 아래의 결과가 잘 출력되었다.

 

 

 

 

 

 

728x90
반응형
LIST