[typescript] async/await를 사용한 비동기 코드의 가독성 향상

JavaScript의 비동기 처리를 위해 사용되는 Promiseasync/await는 TypeScript에서도 널리 사용되고 있습니다. async/await를 사용하면 비동기 코드를 더 간결하게 작성할 수 있고, 가독성을 향상시킬 수 있습니다.

1. async/await란?

async 함수는 항상 Promise를 반환하며, 함수 내부에서 await 키워드를 사용하여 Promise가 처리될 때까지 기다릴 수 있습니다. 이를 통해 비동기 코드를 동기식으로 작성하는 것과 유사한 형태로 표현할 수 있습니다.

async function getData() {
  const result = await fetchDataFromAPI();
  return result;
}

2. 가독성 향상

async/await를 사용하면 콜백 함수를 연속적으로 중첩하는 것보다 가독성이 뛰어납니다. 비동기 작업이 순차적으로 실행되는지 여부를 더 명확하게 파악할 수 있습니다.

async function processData() {
  const data1 = await fetchData1();
  const data2 = await fetchData2();
  const result = await combineData(data1, data2);
  return result;
}

위의 예제에서 fetchData1, fetchData2, combineData 함수가 순차적으로 실행되는 것이 명확하게 드러나며, 콜백 지옥과 같은 복잡한 구조를 피할 수 있습니다.

3. 에러 처리

async/await를 사용하면 try/catch 문을 통해 에러를 처리할 수 있습니다. 이는 에러 처리 코드를 보다 명시적으로 작성할 수 있게 해주고, 오류 발생 시 가독성을 높일 수 있습니다.

async function fetchDataWithRetry() {
  let retryCount = 3;
  while (retryCount > 0) {
    try {
      const data = await fetchDataFromAPI();
      return data;
    } catch (error) {
      console.error('Error fetching data:', error);
      retryCount--;
    }
  }
  throw new Error('Failed to fetch data after 3 retries');
}

결론

async/await는 TypeScript에서 비동기 코드를 작성하고 관리하는 데 매우 유용한 도구입니다. 코드의 가독성을 향상시키고, 비동기 작업을 더 명확하고 효율적으로 처리할 수 있습니다.

이러한 장점을 고려할 때, 적절한 상황에서 async/await를 적극적으로 활용하여 코드의 유지보수성과 가독성을 높이는 것이 좋습니다.

참고문헌: