Promise와 async/await

orangesky·2024년 1월 10일

Study

목록 보기
8/9

자바스크립트에서 Promise와 async/await에 대해 들어보셨나요? 둘 다 비동기 연산을 처리하는 데 사용되지만 작동 방식에는 약간의 차이가 있습니다. API 호출을 예로 들어 설명해드리겠습니다.

Promise의 경우 fetch 함수를 사용하여 네트워크 요청을 보내면 Promise가 반환됩니다. 데이터가 준비되면 .then() 메서드를 사용하여 데이터를 처리하고 .catch() 메서드를 사용하여 오류를 처리할 수 있습니다. 다음은 예제입니다:

fetchWithPromise(url) {
 fetch(url)
 .then(response => response.json())
 .then(data => console.log(data))
 .catch(error => console.error('Error:', error));
}

fetchWithPromise('https://api.example.com/data');

이제 async/await에 대해 이야기해 보겠습니다. 이를 통해 우리는 프로미스를 다룰 때 보다 간결하고 동기적으로 보이는 코드를 작성할 수 있습니다. 다음은 예시입니다:

fetchWithAsyncAwait(url) {
 try {
 const response = await fetch(url);
 const data = await response.json();
 console.log(data);
 } catch (error) {
 console.error('Error:', error);
 }
}

fetchWithAsyncAwait('https://api.example.com/data');

이 경우, async 함수는 await 키워드를 사용하여 각 프로미스가 완료될 때까지 기다립니다. 또한 try...catch 문을 사용하여 오류를 처리합니다.

따라서 Promise와 async/await의 주요 차이점은 다음과 같습니다:

  • 구문: Promise는 .then() 및 .catch()를 사용하여 비동기 로직을 처리하는 반면, async/await은 코드를 보다 동기적이고 가독성 있게 만듭니다.
  • 오류 처리: async/await은 try...catch를 사용하므로 오류 처리가 더 명시적이고 일관적입니다.
  • 가독성: async/await을 사용하면 복잡한 비동기 로직을 더 쉽게 읽고 이해할 수 있습니다.
  • Promise와 async/await은 모두 자바스크립트에서 비동기 연산을 처리하는 방식입니다. 내부적으로는 비슷한 방식으로 작동하지만 코드를 작성하고 읽는 방식이 다릅니다.

  • Promise는 비동기 연산을 처리하는 객체입니다. 이 객체는 연산이 완료될 때까지 기다렸다가 결과를 반환하거나 오류를 발생시킵니다. .then() 및 .catch() 메서드를 사용하여 여러 비동기 연산을 함께 연결하여 오류를 처리할 수 있습니다.

  • 비동기/어웨이트를 사용하면 보다 간결하고 동기적인 방식으로 프라미스 코드를 작성할 수 있습니다. 비동기 함수 안에 await 키워드를 사용하면 자바스크립트 엔진은 프로미스가 해결될 때까지 함수 실행을 일시 중지합니다. 그런 다음 다음 코드 줄을 계속 진행합니다. 이렇게 하면 비동기 코드가 동기 코드처럼 보이므로 읽기가 더 쉬워집니다.

  • 기본적으로 Promise와 async/await은 모두 비동기 연산을 처리하는 데 동일한 Promise 기반 메커니즘을 사용하지만, 비동기/await이 더 직관적이고 간결하게 표현할 수 있는 방식입니다. 그렇기 때문에 복잡한 비동기 로직을 처리할 때 async/await을 사용하는 것을 선호하는 경우가 많습니다.

profile
Dev in Progress

0개의 댓글