자바스크립트 async/await를 이용한 비동기 데이터 처리

자바스크립트는 단일 스레드로 동작하는 언어이기 때문에 비동기적인 작업을 처리할 때 콜백 지옥(callback hell)에 빠지기 쉽습니다. 이러한 문제를 해결하기 위해 자바스크립트에는 async/await라는 기능이 도입되었습니다.

async/await는 자바스크립트의 비동기적인 작업을 동기적인 코드 스타일로 작성할 수 있게 해주는 문법입니다. 이를 통해 비동기 데이터 처리 코드를 훨씬 간결하고 가독성이 좋게 작성할 수 있습니다.

async 키워드

async 키워드는 비동기 함수를 정의할 때 사용됩니다. 함수 앞에 async 키워드를 붙이면 해당 함수는 비동기 함수로 동작하게 됩니다. 이 함수 안에서는 await 키워드를 사용해서 비동기 작업의 결과를 기다릴 수 있습니다.

async function fetchData() {
  // 비동기 작업을 시작하는 코드
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  
  // 비동기 작업의 결과를 처리하는 코드
  console.log(data);
}

위의 예제에서 fetchData 함수는 async 키워드를 사용하여 비동기 함수로 정의되었습니다. 함수 내부에서는 await 키워드를 사용하여 비동기 작업인 데이터 조회를 기다린 후 결과를 처리합니다.

await 키워드

await 키워드는 async 함수 내부에서만 사용될 수 있습니다. await 키워드를 사용하면 해당 비동기 작업의 결과가 반환될 때까지 코드의 실행을 일시적으로 중단시킬 수 있습니다.

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

위의 예제에서 fetchUser 함수는 await 키워드를 사용하여 데이터 조회를 기다린 후, 데이터가 반환되면 해당 값을 user 변수에 할당하고 반환합니다.

에러 처리

async/await는 간편하게 비동기 작업을 처리할 수 있지만, 에러 처리도 중요합니다. await 키워드를 사용한 비동기 작업 중에 발생한 에러는 try-catch문을 사용하여 처리할 수 있습니다.

async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    
    // 에러가 발생하면 catch 블록으로 이동
    if (!response.ok) {
      throw new Error('데이터를 가져오는데 실패했습니다.');
    }
    
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

위의 예제에서 fetchData 함수는 try-catch문을 사용하여 데이터 조회 작업 중에 발생한 에러를 처리합니다. response.okfalse인 경우, 에러를 throw하고 catch 블록으로 이동하게 됩니다.

결론

async/await는 자바스크립트의 비동기 데이터 처리를 간편하고 가독성이 좋게 작성할 수 있게 해주는 문법입니다. 콜백 지옥을 피하고, 데이터 처리의 흐름을 명확하게 표현할 수 있는 이 기능을 적절히 활용해보세요.