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 → 6 → 2 → 4 → 7 → 3 → 5: 완료
B. 1 → 2 → 4 → 6 → 7 → 3 → 5: 완료
C. 1 → 6 → 7 → 2 → 4 → 3 → 5: 완료
D. 1 → 2 → 3 → 4 → 5: 완료 → 6 → 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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.