JavaScript - Promise와 Async/Await의 차이점

김서영·2024년 2월 6일
0

Promise

Promise는 객체이며, .then()과 .catch()를 통해 비동기 작업의 성공과 실패를 처리

비동기 작업을 표현하는 데 콜백 함수보다는 명확하고 구조화된 방법을 제공

Async/Await

async 함수와 await 키워드를 사용하여 비동기 코드를 동기식으로 작성할 수 있게 해줌

차이점

1. 문법 및 사용법

  • Promise는 객체이며, .then()과 .catch()를 통해 비동기 작업의 성공과 실패를 처리합니다. 비동기 작업을 표현하는 데 콜백 함수보다는 명확하고 구조화된 방법을 제합니다.
  • async 함수와 await 키워드를 사용하여 비동기 코드를 동기식으로 작성할 수 있게 해줌

2. 가독성과 유지보수성

  • Promise는 비동기 코드를 처리하는 데 콜백 헬(callback hell)을 방지하고 가독성을 향상시킴
    그러나 여전히 연속적인 .then() 메서드의 체인을 작성해야 하므로 비동기 코드가 길어지면 복잡성이 증가할 수 있음
  • Async/Await는 동기식 코드와 유사하게 작성되어 가독성이 향상되며, 비동기 코드의 흐름을 자연스럽게 이해하기 쉬움
    또한, try-catch 문을 사용하여 오류 처리를 보다 간단하게 할 수 있음

3. Error Handling

  • Promise의 오류 처리는 .catch()를 통해 수행
    각 .then() 체인에서 개별적으로 오류를 처리할 수 있음
  • Async/Await에서는 일반적으로 try-catch 문을 사용하여 오류를 처리 이는 동기식 코드와 유사하게 오류 처리를 구현할 수 있게 해줌

4. 중첩된 비동기 코드 처리

  • Promise는 .then()을 여러 번 중첩하여 사용할 수 있으므로 중첩된 비동기 코드를 처리할 수 있음
  • Async/Await 역시 중첩된 비동기 코드를 처리할 수 있음
    하지만 await를 사용할 때마다 함수가 차단(block)되므로, 연속적인 비동기 작업이 순차적으로 실행됨
profile
개발과 지식의 성장을 즐기는 개발자

0개의 댓글