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