Page 17 -
P. 17

출 스택에 머물러 있다가 실행이 완료되면 호출 스택에서 지워집니다. third, second, first,
                    anonymous 순서로 지워지고, anonymous 컨텍스트까지 실행이 모두 완료되었다면 호출 스택은 비
                    어 있게 됩니다.                                                                         1

                    콘솔의 출력 결과는 다음과 같습니다.                                                              노드 시작하기


                      콘솔
                      세 번째
                      두 번째
                      첫 번째


                    이번에는 특정 밀리초(1,000분의 1초) 이후에 코드를 실행하는 setTimeout을 사용하겠습니다. 콘
                    솔에 어떤 로그가 기록될지 예측해보세요.


                      function run() {
                        console.log('3초 후 실행');
                      }
                      console.log('시작');
                      setTimeout(run, 3000);
                      console.log('끝');

                    결과는 다음과 같습니다.


                      콘솔
                      시작
                      끝
                      3초 후 실행


                    3초 뒤에 run 함수를 실행하는 코드입니다. 콘솔 결과는 쉽게 예측할 수 있지만, 호출 스택으로 설
                    명하기는 힘듭니다. setTimeout 함수의 콜백인 run이 호출 스택에 언제 들어가는지 지금까지 배

                    운 내용으로는 쉽게 파악할 수 없기 때문입니다. 이를 파악하기 위해서는 이벤트 루프, 태스크 큐
                    (task queue), 백그라운드(background)를 알아야 합니다. 다음은 기술적으로 정확히 설명하기보다
                    는 이해를 돕기 위해 추상화해서 설명한 내용입니다.


                       ●     이벤트 루프: 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순
                         서를 결정하는 역할을 담당합니다. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복
                         하므로 루프(loop)라고 부릅니다.



                                                                                                  29





     node_06.indd   29                                                                      2020-07-14   오전 11:01:52
   12   13   14   15   16   17   18   19   20   21   22