자바스크립트 async/await 문법

자바스크립트에서 비동기 코드를 처리하기 위해 제공되는 async/await 문법은 ES2017(ECMAScript 2017)에서 도입되었습니다. 이는 비동기 작업을 보다 직관적이고 동기적으로 다룰 수 있게 해주는 키워드입니다. async 함수는 항상 Promise를 반환하며, await 키워드는 비동기 작업을 기다린 후 결과를 반환합니다.

async 함수

async 키워드를 사용하여 표시된 함수는 항상 Promise를 반환합니다. 이 함수 내에서 await 키워드를 사용하여 비동기 작업이 완료될 때까지 대기할 수 있습니다.

async function getData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  
  return data;
}

위의 예제에서 fetch() 함수는 비동기적으로 데이터를 가져오는 작업을 수행하고, response.json()은 데이터를 JSON 형식으로 변환합니다. await 키워드는 비동기 작업이 완료되기를 기다린 후 다음 줄로 진행합니다.

await 키워드

await 키워드는 async 함수 내에서만 사용할 수 있습니다. 이 키워드는 Promise가 처리될 때까지 함수의 실행을 일시 중지하고, Promise의 결과를 반환합니다.

async function processData() {
  const data = await getData();
  
  console.log(data);
}

위의 예제에서 processData() 함수는 getData() 함수를 호출하고, await 키워드를 사용하여 getData() 함수의 처리가 완료될 때까지 대기합니다. 그리고 결과 값을 data 변수에 저장하고 출력합니다.

오류 처리

async/await 문법을 사용할 때에는 오류 처리에 주의해야 합니다. await 키워드를 사용한 비동기 작업이 실패할 경우, 오류가 발생하게 됩니다. 이 오류를 처리하기 위해서는 try/catch 문을 사용합니다.

async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
  
    return data;
  } catch (error) {
    console.error("Error occurred:", error);
    throw error;
  }
}

위의 예제에서 fetch() 함수와 response.json() 함수를 호출하는 부분은 try 블록으로 감싸져 있습니다. 만약 오류가 발생할 경우 catch 블록으로 제어 흐름이 전달되며, 오류를 출력하고 다시 던져집니다.

요약

async/await 문법은 자바스크립트에서 비동기 처리를 좀 더 간편하고 직관적으로 다룰 수 있게 해줍니다. async 함수를 사용하여 비동기 작업을 처리하고, await 키워드를 사용하여 비동기 작업의 완료를 기다릴 수 있습니다. 사용할 때에는 오류 처리에 유의해야하며, try/catch 문을 사용하여 오류를 처리할 수 있습니다.