해결된 질문
작성
·
272
·
수정됨
0
호출스택에 먼저 (anonymous)가 있고 a를 호출하니 a함수가 그 위에 쌓이고
그 다음 setTimeout은 비동기코드이니까 백그라운드에 있다가 콜백함수가 태스크큐를 거쳐 이벤트루프를 타고 호출스택으로 가기전에 호출스택이 비어져있어야 콜백함수가 호출스택으로 가는데 a안에 setTimeout이 있으니 동기코드가 아직 안끝났는데 콜백함수가 어떻게 호출스택으로 갈 수 있나요?
동기코드는 그 안의 비동기코드가 아직 안끝났어도 자기 할일이 다 끝나면 호출스택에서 벗어나는건가요?
답변 1
0
네 맞습니다. (anonymous) -> a -> setTimeout 순으로 쌓인 다음에 setTimeout은 백그라운드에 타이머와 익명함수를 보내고 바로 종료되어 호출스택에서 빠집니다.
(anonymous) -> a가 호출 스택에 남게 되고, a도 할 일을 마쳤으니 호출스택에서 빠집니다.
(anonymous)도 종료되어 호출스택에서 빠지고, 호출스택은 비어있게 됩니다.
이후 태스크큐에 타이머 익명함수가 있으면 호출스택이 비었으니 호출스택으로 올라갑니다.