본문 바로가기

카테고리 없음

setTimeOut 을 여러개 등록 했을 때, 실행 순서가 등록 순서와 다른 이유(javascript)

우선 위 질문에 대답하기 전에, javascript 실행엔진이 어떻게 작동하는지 알아야 한다.

 

javascript 엔진은 컨텍스트 스택과 이벤트 큐로 이루어져 있다. 

 

 컨택스트 스택에서 가장 위에 있는 요소가 현재 실행중인 스택이다.

 

예를 들어 javascript 코드 에서 우리가 

 

setTimeOut(fun1, 7000);

 

setTimeOut(fun2, 5000);

 

setTimeOut(fun3, 3000);

 

 

setTimeOut(fun4, 6000);

 

이렇게  되면  아마   fun3, fun4, fun2,  fun1 순서대로 불러와질 것이다. 

어떻게 이렇게 돌아가는가? setTimeOut 함수들이 각각 쌓이면서 

지정한 시간만큼 돌아가면 , 그 이후에 각 함수가 이벤트 큐에 넣어지기 때문에 그렇다.