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