async와 await은 비동기 작업을 동기 방식처럼 다룰 수 있도록 도와준다. 이를 사용하면 Promise 기반의 비동기 코드를 더 읽기 쉽고 관리하기 쉽게 만들 수 있다.
async
함수 앞에 붙여 비동기 함수를 선언한다. 항상 Promise를 반환한다.
async function fetchData() {
return 'Hello, world!';
}
fetchData().then((data) => console.log(data)); // 출력: Hello, world!
fetchData 함수는 async로 선언되었으므로 내부에서 Promise 처리되어 반환된다.
await
async 함수 안에서 Promise가 해결될 때 까지 코드 실행을 멈추고, 해결되면 결과값을 반환하며 오류가 발생하면 throw로 예외를 반환한다.
async function getData() {
const result = await fetch('https://api.example.com/data'); // 비동기 API 호출
const data = await result.json(); // API 응답을 JSON으로 변환
console.log(data); // 데이터 출력
}
getData();
특징
- 가독성 향상 : 비동기 코드가 동기 코드로 보여 가독성이 좋다. try/catch 구문으로 오류를 처리할 수 있어 더욱 직관적이다.