call stack 표현이 잘못표현된것이 아닌가요?
2
작성한 질문수 14
5. [실전 훈련] 사고 실험: 상태 누적 시각화 추적하기
예시에서
[Step 2] setTimeout과 Promise 등록
등을 보면 Call Stack이 비어있음 이라고 표현하셨는데, main 호출후 -> 동기코드 완료될때까지. Call Stack은 엄밀히 비어있는 상태가 아니지 않나요?
즉 console.log("D") 가 출력되기 전까지는
콜 스택이 비워지는 상태가 발생할수 없지 않나요?
혹시 제가 잘못 알고 있을수도 있으니
조심히 여쭙습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. hanumoka님.
call stack 표현과 관련하여 질문해 주셔서 감사합니다. Call Stack의 개념은 JavaScript의 비동기 처리에서 이해해야 할 중요한 부분이죠. 질문하신 내용을 바탕으로, 여기에서 조금 더 자세히 설명해 드리겠습니다.
Call Stack의 이해
Call Stack:
- Call Stack은 현재 실행할 함수와 관련된 작업을 추적하는 구조입니다. 동기 코드가 실행될 때 이 Stack에 함수 호출이 쌓이고, 함수가 종료되면 해당 스택이 비워집니다.
- Call Stack은 현재 실행할 함수와 관련된 작업을 추적하는 구조입니다. 동기 코드가 실행될 때 이 Stack에 함수 호출이 쌓이고, 함수가 종료되면 해당 스택이 비워집니다.
주어진 예시에서의 상황:
setTimeout이나Promise는 비동기적으로 작업을 처리합니다. 이 비동기 작업은 Call Stack에 바로 올라가지 않으며, 태스크 큐나 마이크로태스크 큐에 등록되어 비동기 처리를 대기합니다.
- 메인 실행 컨텍스트: 메인 코드 실행 시, 호출 스택(Call Stack)에 엔트리가 쌓이고, 즉시 실행되는 동기 코드(
console.log("D"))의 실행이 완료되면 스택은 비워집니다.
이와 관련한 개념:
console.log("D")와 같은 동기 코드가 실행 중일 때는 해당 호출 스택에 남아 있으나, 이 코드가 실행을 마치면 Call Stack은 비워지게 됩니다.
- 이후 비동기 태스크(awaits setTimeout 및 Promise)는 이벤트 루프에 의해 Call Stack이 비워진 후 들어오게 됩니다.
즉, 기본적으로 console.log("D")와 같은 마지막 동기 코드가 실행될 때까지 Call Stack은 비어있지 않습니다. 올바른 처리 흐름을 이해하는 것은 비동기 JavaScript 코드를 작성하는 데 매우 중요하며, 해당 부분을 명확히 이해하시려는 노력은 매우 칭찬할 만합니다.
자세한 사항은 다음의 Node.js와 비동기 처리 관련 자료를 참조해 보시면 추가적인 도움이 될 수 있습니다:
- Node.js Event Loop Documentation
- JavaScript Call Stack, Event Loop Basics
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
추천해주신 책에 대해 문의드립니다.
0
4
0
전자책으로 구매인증 가능할까요?
0
33
1
강의자료가 누락됐어요
0
40
2
cache관련 질문 드립니다
0
26
1
React 와 Virtual DOM 의 이야기 영상 실행이 안됩니다.
0
29
1
형 책 어떻게 받아?
1
47
1
PPT 자료 공유 받을 수 있을까요?
0
29
1
4주차 미션 게시판이 안보여요~
0
41
2
강의 일정 및 수업 자료 공유 관련 문의드립니다!
0
32
1
6번 질문
0
52
2
일반 강의와 차이점?
1
37
1
수강완료 후 문의 드립니다.
1
41
2
!= 연산자의 역할
0
32
1
JpaCursorItemReader의 정렬 조건 부재의 영향
1
38
2
sizeof는 컴파일 타임 연산자라서 CPU를 사용치 않는다
0
29
2
중요하진 않지만 설명하신부분에서 안된부분..
0
28
0
"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션
1
47
2
강의 듣는 순서가 어떻게 되나요?
0
46
1
stopPropagation()에 대해서 질문 있습니다.
0
46
2
혹시 다음 강의 제작 예정된 것들이 있을까요?
0
69
1
1강 질문
0
60
2
ai가 만든 강의인가요?
0
115
1
3강 질문
0
73
2
2강 nodejs 3단계 설명 질문
0
82
1





