JavaScript - 문제 미리보기
문제 712
hard
다음 코드의 실행 순서로 올바른 것은?
```javascript
console.log("1");
async function myDisplay() {
console.log("2");
let myPromise = new Promise(function(resolve) {
setTimeout(function() {
console.log("3");
resolve("완료");
}, 2000);
});
console.log("4");
let result = await myPromise;
console.log("5: " + result);
}
console.log("6");
myDisplay();
console.log("7");
```
정답: A
실행 순서를 단계별로 분석하면:
1) "1" 출력 - 동기 코드
2) "6" 출력 - 동기 코드
3) `myDisplay()` 호출 시작
4) "2" 출력 - async 함수 내부 동기 코드
5) Promise 생성, `setTimeout` 예약 (2초 후 실행)
6) "4" 출력 - Promise 생성 후 동기 코드
7) `await myPromise` - 여기서 함수 실행이 일시정지
8) "7" 출력 - async 함수가 일시정지되었으므로 메인 스레드 계속 실행
9) 2초 후: "3" 출력 - setTimeout 콜백 실행
10) Promise resolve됨
11) "5: 완료" 출력 - await가 완료되어 async 함수 재개
`await`는 Promise가 완료될 때까지 해당 함수만 일시정지시키고, 메인 스레드는 계속 다른 코드를 실행합니다.
💡 학습 팁
이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.