[typescript] async 함수의 실행 컨텍스트 관리
웹 개발을 하다보면 비동기적인 작업을 수행해야 하는 경우가 많습니다. 이때 Promise나 async/await를 사용하여 비동기 코드를 더 쉽게 작성할 수 있습니다. 하지만 async 함수의 실행 컨텍스트 관리에 대해 이해하고 있다면 더 효율적인 코드를 작성할 수 있습니다. 이번 포스트에서는 async 함수의 실행 컨텍스트를 관리하는 방법에 대해 알아보겠습니다.
1. async 함수란?
async 함수는 비동기 작업을 수행하는 함수로, 내부에 await 키워드를 사용하여 Promise의 처리를 기다릴 수 있습니다.
예를 들어, 다음은 async 함수의 간단한 예시입니다.
async function fetchData() {
let data = await fetch('https://api.example.com/data');
return data.json();
}
2. async 함수의 실행 컨텍스트 관리 방법
2.1. Promise chaining
async 함수 내부에서 여러 개의 비동기 작업을 연달아 처리해야 하는 경우, Promise chaining을 사용할 수 있습니다.
async function fetchAndProcessData() {
let rawData = await fetch('https://api.example.com/data');
let processedData = await processData(rawData);
return processedData;
}
2.2. Promise.all
여러 개의 비동기 작업을 병렬로 처리해야 하는 경우, Promise.all을 사용하여 여러 Promise를 동시에 실행하고 그 결과를 기다릴 수 있습니다.
async function fetchAndProcessData() {
let [data1, data2] = await Promise.all([fetch('https://api.example.com/data1'), fetch('https://api.example.com/data2')]);
return processData(data1, data2);
}
2.3. 에러 처리
async 함수 내에서 에러가 발생한 경우, try/catch 문을 사용하여 에러를 처리할 수 있습니다.
async function fetchData() {
try {
let data = await fetch('https://api.example.com/data');
return data.json();
} catch (error) {
console.error('에러 발생: ', error);
}
}
결론
async 함수를 사용하여 비동기 작업을 처리할 때는 Promise chaining, Promise.all, 그리고 에러 처리에 유의해야 합니다. 이를 효율적으로 활용함으로써 코드의 가독성과 안정성을 높일 수 있습니다.
참고자료: