
async와 await는 javascript의 비동기 처리 방식 중 하나이다.
async가 붙은 함수는 promise를 반환하며 그 안에서만 await 키워드를 사용할 수 있다.
promise 앞에 await를 붙이면 그 promise가 처리될 때 까지 코드 실행을 일시적으로 정지한다. 처리가 완료될 시, 오류가 발생하지 않았다면 promise 객체의 결과값을 return한다.
async와 await를 사용하면 비동기 코드를 동기 코드처럼 작성할 수 있으므로 가독성이 좋아지고 에러 처리가 간단해진다.
만약 처리가 완료된 시점에서 오류가 발생하였다면, 예외가 생성된다. 이 예외는 throw error를 호출한 것과 동일하며, try-catch를 통해 감지할 수 있다. try-catch가 없다면 async 함수를 호출하여 생긴 promise가 rejected 상태가 된다.
async 함수에 .catch를 추가하여 rejected 상태인 promise를 처리할 수 있다.
promise를 쓸 때와, axios를 쓸 때와 비교하는 것이 중요하다.
async function example() {
try {
const data = await fetch(url);
return await data.json();
} catch (error) {
throw error;
}
}