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