질문 9 · 실전 면접 답변
async/await는 어떻게 사용하고 오류를 처리하나요?
이렇게 답해 보세요 (핵심 답변)
async 키워드를 붙인 함수는 항상 Promise를 반환하며, 그 안에서 await를 사용하면 대상 Promise가 결정될 때까지 해당 함수의 실행을 잠시 멈추었다가 결과값을 받아 이어서 실행합니다. 만약 await한 Promise가 거부되거나 함수 내부에서 예외가 던져지면 일반 동기 코드처럼 try/catch 문으로 자연스럽게 잡아 처리할 수 있습니다. 이때 await는 해당 async 함수의 진행만 일시 중단할 뿐 브라우저 메인 스레드 전체를 멈추지 않습니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 일반 값을 await하더라도 그 뒤의 코드는 즉시 이어지지 않고 마이크로태스크 큐를 거쳐 비동기적으로 재개됩니다.
- 서로 독립적인 요청을 줄마다 연속해서 await하면 앞 요청이 끝날 때까지 다음 요청이 시작되지 않아 전체 응답이 느려질 수 있습니다.
면접에서 자주 하는 실수
함수 안에서 await나 return 없이 따로 실행만 해 둔 Promise가 실패하면 바깥의 try/catch 블록이 그 에러를 잡지 못합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 9번을 바탕으로 질문과 답변을 새로 정리했습니다.