학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 10 · 실전 면접 답변

Promise와 async/await는 어떤 관계인가요?

이렇게 답해 보세요 (핵심 답변)

Promise는 비동기 작업의 상태와 결과를 담는 객체이고, async/await는 그 Promise를 동기 코드처럼 읽기 쉬운 흐름으로 다루게 해 주는 문법입니다. async 함수 자체가 항상 Promise를 반환하고 await도 Promise의 이행을 기다리는 연산이므로, 두 기술은 서로를 대체하는 관계가 아니라 함께 조합해 쓰는 관계입니다. 실제로 앞 결과에 의존하는 순차 작업은 await로 작성하고, 독립적인 병렬 요청은 Promise.all로 묶어 await하는 식으로 함께 활용합니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. await 지점에서 거부된 Promise는 마치 그 줄에서 예외가 발생한 것처럼 동작해 try/catch로 일관되게 다룰 수 있습니다.
  2. async/await로 작성한 비동기 흐름은 본질적으로 Promise의 then 체인으로 연결한 흐름과 같은 실행 모델을 따릅니다.

면접에서 자주 하는 실수

함수에 async를 붙였다고 해서 함수 전체가 나중에 시작되는 것은 아니며, 첫 번째 await를 만나기 전까지의 코드는 호출 즉시 동기적으로 실행됩니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 10번을 바탕으로 질문과 답변을 새로 정리했습니다.

← JavaScript