Skip to content

Latest commit

 

History

History
42 lines (30 loc) · 1.59 KB

Event_Loop.md

File metadata and controls

42 lines (30 loc) · 1.59 KB

Event Loop


velopert님의 강좌를 보고 정리한 글입니다.

node.js에선 event를 많이 사용하고, 이 때문에 속도가 빠르다. node.js 기반으로 만들어진 서버가 가동되면 변수들을 초기화하고, 함수를 선언하고, 이벤트가 일어날 때 까지 기다린다.

Event-Driven 어플리케이션에서는 이벤트를 대기하는 메인 루프가 있고, 이벤트가 감지되었을 시에 Callback 함수를 호출한다.

이벤트와 콜백의 차이점은

  • 콜백함수는 비동기식 함수에서 결과를 '반환할 때' 호출되지만
  • 이벤트핸들링은 옵저버 패턴에 의해 작동된다.

이벤트를 대기하는 EventListeners 함수들이 옵저버 역할을 한다. 옵저버들이 이벤트를 기다리다가, 이벤트가 실행되면 이벤트를 처리하는 함수가 실행된다.

// events 모듈 사용 
var events = require('events');

// EventEmitter 객체 생성
var eventEmitter = new events.EventEmitter();

// EventHandler 함수 생성
var connectHandler = function connected() {
    console.log('Connection Successful');

    // data_recieved 이벤트를 발생시키기
    eventEmitter.emit('send event');
}

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

// data_recieved 이벤트와 익명 함수 연동
// 함수를 변수 안에 담는 대신, .on() 메소드의 인자로 직접 함수를 전달
eventEmitter.on('send event', function() {
    console.log('Data Received');
});

eventEmitter.emit('connection');

console.log('END');