async
와 await
는 자바스크립트에서 비동기 프로그래밍을 간결하고 읽기 쉽게 만드는 데 사용되는 키워드이다. 이 두 키워드는 함께 사용되며, 각각의 역할과 사용법을 명확히 이해하는 것이 중요하다.async와 await의 비교
1. async
- 정의: 함수 선언 앞에
async
키워드를 붙여 비동기 함수를 정의한다.
- 역할: 함수를 비동기 함수로 만들어주며, 이 함수는 항상
Promise
객체를 반환한다.
- 사용 예시:위 함수는
async
키워드를 통해 비동기 함수로 정의되었으며, 호출 시Promise
를 반환한다.
javascript코드 복사
async function fetchData() {
// 이 함수는 항상 Promise를 반환한다.
return "data";
}
2. await
- 정의: 비동기 함수 내부에서 사용되는 키워드이다.
- 역할:
Promise
객체가 해결될 때까지 기다리며, 그 결과를 반환한다.await
는async
함수 안에서만 사용할 수 있다.
- 사용 예시:위 예시에서
await
는fetchData
함수가 반환하는Promise
가 해결될 때까지 기다리고, 그 결과를data
변수에 할당한다.
javascript코드 복사
async function main() {
const data = await fetchData();
console.log(data); // "data"
}
예제 코드로 비교
javascript코드 복사
// 비동기 작업을 포함하는 함수 정의 (async)
async function fetchData() {
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
const data = await response.json();
return data;
}
// 비동기 함수를 호출하고 결과를 처리하는 함수 (async 및 await)
async function main() {
try {
// await를 사용하여 fetchData 함수가 반환하는 Promise를 기다림
const data = await fetchData();
console.log('Fetched data:', data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
// 메인 함수 실행
main();
요약 비교
- 역할:
async
: 함수를 비동기적으로 정의하고, 항상Promise
객체를 반환하도록 한다.await
: 비동기 함수의 실행을 일시 중지하고,Promise
가 해결될 때까지 기다린다. 그 결과를 반환.
- 위치:
async
: 함수 선언부에 위치.await
:async
함수 내부에서 사용되며,Promise
앞에 위치.
- 사용 방식:
async
: 함수 선언 시 사용한다.await
: 비동기 작업을 처리할 때 사용한다.
- 결과:
async
: 비동기 함수를 정의하며, 호출 시Promise
를 반환.await
:Promise
가 해결될 때까지 기다리고, 그 결과 값을 반환.
결론
async
와 await
는 자바스크립트에서 비동기 작업을 처리하는 데 매우 유용한 키워드이다. async
는 비동기 함수를 정의하는 데 사용되며, 이 함수는 항상 Promise
를 반환한다. await
는 비동기 함수 내부에서 Promise
가 해결될 때까지 기다리고, 그 결과 값을 반환하는 데 사용된다. 이 두 키워드를 함께 사용하면 비동기 코드를 더 직관적이고 동기 코드처럼 읽히게 작성할 수 있다.Share article