JavaScript의 비동기 처리를 위해 사용되는 Promise
와 async/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
를 적극적으로 활용하여 코드의 유지보수성과 가독성을 높이는 것이 좋습니다.
참고문헌: