인프런 커뮤니티 질문&답변

Bell Vise님의 프로필 이미지

작성한 질문수

[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문

비동기 코드 질문

해결된 질문

23.08.01 20:36 작성

·

268

·

수정됨

0

호출스택에 먼저 (anonymous)가 있고 a를 호출하니 a함수가 그 위에 쌓이고

그 다음 setTimeout은 비동기코드이니까 백그라운드에 있다가 콜백함수가 태스크큐를 거쳐 이벤트루프를 타고 호출스택으로 가기전에 호출스택이 비어져있어야 콜백함수가 호출스택으로 가는데 a안에 setTimeout이 있으니 동기코드가 아직 안끝났는데 콜백함수가 어떻게 호출스택으로 갈 수 있나요?

동기코드는 그 안의 비동기코드가 아직 안끝났어도 자기 할일이 다 끝나면 호출스택에서 벗어나는건가요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2023. 08. 02. 01:21

네 맞습니다. (anonymous) -> a -> setTimeout 순으로 쌓인 다음에 setTimeout은 백그라운드에 타이머와 익명함수를 보내고 바로 종료되어 호출스택에서 빠집니다.

(anonymous) -> a가 호출 스택에 남게 되고, a도 할 일을 마쳤으니 호출스택에서 빠집니다.

(anonymous)도 종료되어 호출스택에서 빠지고, 호출스택은 비어있게 됩니다.

이후 태스크큐에 타이머 익명함수가 있으면 호출스택이 비었으니 호출스택으로 올라갑니다.