강의 설명 중에 헷갈리는 것이 있네요
5
26 asked
2:31 부터 동기, 비동기 설명이 서로 반대로 되어있는 거 같은데 혹시 제가 잘못 이해하고 있는걸까요?
저는 설명해주신거랑 반대로 이해하고 있긴 해서요
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다. haseung님.
동기와 비동기 개념이 반대로 설명된 것처럼 느껴지셨다면, 아래 기존 답변이 관련 내용을 이해하는 데 도움이 될 수 있습니다.
call stack 표현이 잘못표현된것이 아닌가요?
동기 처리는 앞선 작업이 끝날 때까지 다음 작업이 진행되지 않고 순서대로 실행되는 방식입니다. 반면 비동기 처리는 시간이 걸리는 작업을 시작한 뒤 결과를 기다리지 않고 다음 코드를 실행하며, 작업이 완료되면 콜백·Promise·이벤트 등을 통해 후속 처리를 진행합니다.
예를 들어 다음 코드에서 console.log("D")는 동기 코드이므로 비동기 작업을 등록한 직후에도 먼저 실행됩니다.
setTimeout(() => {
console.log("A");
}, 0);
Promise.resolve().then(() => {
console.log("B");
});
console.log("D");
일반적인 출력 순서는 다음과 같습니다.
D
B
A
setTimeout과 Promise 자체가 호출된 순간 바로 실행되는 것이 아니라, 각각 작업 큐에 등록됩니다. 현재 실행 중인 동기 코드가 모두 끝난 뒤, Promise의 후속 작업인 마이크로태스크가 먼저 실행되고 이후 타이머 콜백이 실행됩니다.
따라서 핵심은 다음과 같습니다.
- 동기: 현재 작업이 끝날 때까지 다음 작업이 기다림
- 비동기: 작업을 시작한 뒤 결과를 기다리지 않고 다음 작업을 진행함
- 비동기라고 해서 먼저 실행되는 것은 아님: 동기 코드가 모두 끝난 후 정해진 우선순위에 따라 실행됨
- Next.js에서도 동일함: 서버 컴포넌트의 데이터 fetching 등은 비동기로 처리할 수 있지만, 해당
await를 만난 코드의 흐름에서는 결과를 기다린 후 다음 줄이 실행됩니다
강의의 어느 문장이나 예시가 반대로 느껴졌는지 코드 또는 강의 화면을 함께 남겨주시면 더 정확히 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수업자료 관련 문의
0
14
2
22강 [토큰 저장] 질문
0
25
1
클로드 사용 오류
0
22
3
음성불량
0
20
1
1강 동영상 재생 오류
1
20
2
generateStaticParams() 응용 질문 드립니다.
0
24
2
Mac intel 에서 Homebrew 설치
0
26
1
카카오톡 sdk 로그인
1
22
1
🔥 [필수] 강의교안 & 소스코드 🔥 링크오류
0
37
2
Context7 버전 관련
0
33
2
깃 초기화?
0
36
2
13강 [로그인 단일 토큰] 에서 프로젝트 실행 시 에러
0
32
1
Composition단계에서 `Layer`는 누가 만드는지
0
32
1
서브에이전트
0
49
2
서브에이전트의 유효성 질문
0
51
2
쉬림프 태스트 매니저 관련 질문
0
54
2
c:가 아니라 D:로 이동 할려면 어떻게 해야되나요?
0
55
2
ultrathink 관련 질문
0
59
2
네이버 API관련
0
44
1
Strict Mode 예시 질문!
0
51
2
61강(Context API)에서 TodoStateContext 질문
0
54
2
강의 전체 공개
0
35
1
ReturnType에서 any와 never 사용의 차이가 있나요?
0
58
2
Vercel 사용법
0
212
2

