티스토리 뷰

LANGUAGE/NODE.JS

[NODE.JS] EVENT LOOP - 이벤트 루프

진심스테이크 2019. 7. 19. 10:58

 

이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

- 이벤트 : 클릭, 네트워크 요청 등

- 콜백 함수 : 무엇을 할지 미리 등록해 놓은 함수

-> 이벤트 리스너에 콜백 함수를 등록한다 :  특정 이벤트가 발생할 때 무엇을 할지 미리 등록한다는 의미

ex) 버튼을 누르면 경고 창을 띄운다고 했을 때, 콜백 함수는 클릭 이벤트 리스너에 경고 창을 띄우는 행위 

 


 

노드는 이벤트 기반 방식으로 동작함으로 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백함수를 호출하고

  발생한 이벤트가 없거나 발생했던 이벤트를 다 처리하면 노드는 다음 이벤트가 발생할 때 까지 대기한다

 


function run() {
    console.log("3초 후 실행");
}

console.log("시작");
setTimeout(run, 3000);
console.log("끝");

 

이벤트 루프

이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수를 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는역할

- 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하기 떄문에 루프라고 불림

- 호출 스택이 비어있을 때만 태스크 큐에 있는 함수를 호출 스택으로 가져옴

태스크 큐 : 이벤트 발생 후 호출되어야 할 콜백 함수들이 기다리는 공간

- 콜백들이 이벤트 루프가 정한 순서대로 줄을 서 있으므로 콜백 큐라고도 불림

백그라운드 : 타이머나 I/O 작업 콜백 또는 이벤트 리스너들이 대기하는 곳

 

내부 과정

1. main 함수가 호출 스택에 들어가고, 그 뒤 setTimeout이 호출 스택에 들어감

2. 호출 스택에 들어간 순서와 반대로 실행되므로 setTimeout이 먼저 실행

3. setTimeout이 먼저 실행되면 타이머와 함께 run 콜백을 백그라운드로 보내고 호출 스택에서 빠짐

4. main 함수가 호출 스택에서 빠짐

5. 백그라운드에서는 3초를 센 후 run 함수를 태스크 큐로 보냄

'LANGUAGE > NODE.JS' 카테고리의 다른 글

[NODE.JS] KOA  (0) 2019.08.20
[NODE.JS] MODULE - 모듈  (0) 2019.07.21
[NODE.JS] RERL  (0) 2019.07.21
[NODE.JS] SINGLE THREAD  (0) 2019.07.19
[NODE.JS] BASIC THINGS  (0) 2019.07.19
댓글