패스잇
프론트엔드 개발 · 중급

Promise와 async/await의 차이점과 에러 처리 방법에 대해 설명해주세요.

힌트 · 가독성, 에러 처리, 동시 실행 관점에서 비교해보세요.

Promiseasync/awaitSyntactic Sugartry...catch.catch()

모범답안

Promise와 async/await는 둘 다 JavaScript에서 비동기 코드를 처리하는 데 사용됩니다. Promise는 비동기 작업의 최종 완료(성공 또는 실패)를 나타내는 객체이고, async/await는 Promise를 더 쉽게 사용할 수 있도록 해주는 문법적 설탕(Syntactic Sugar)입니다.

가장 큰 차이점은 가독성입니다. async/await를 사용하면 코드가 동기 코드처럼 보여서 이해하기 쉽습니다.

에러 처리 방식도 차이가 있습니다. Promise는 .catch() 메서드를 사용하여 에러를 처리하지만, async/await는 try...catch 구문을 사용하여 동기 코드처럼 에러를 처리할 수 있습니다.

// Promise
fetchData()
  .then(data => processData(data))
  .catch(error => console.error(error));

// async/await
async function fetchDataAndProcess() {
  try {
    const data = await fetchData();
    processData(data);
  } catch (error) {
    console.error(error);
  }
}

동시 실행 측면에서는 Promise.all() 등을 사용하여 여러 Promise를 병렬로 실행할 수 있고, async/await에서도 Promise를 활용하여 병렬 처리를 구현할 수 있습니다. async/await는 기본적으로 순차적으로 실행되지만, Promise와 함께 사용하면 동시성을 확보할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JavaScript 면접 질문

← JavaScript 면접 질문 전체 보기