자바스크립트에서 비동기 작업을 처리하는 방법은 계속해서 발전해왔습니다. 그 중에서도 async/await
는 최근에 도입된 비동기 처리 방식으로, 기존의 콜백 함수나 프로미스보다 더 직관적이고 간결한 코드를 작성할 수 있게 해줍니다. 이번 포스트에서는 async/await
를 이용하여 자바스크립트 코드를 분석하는 방법에 대해 알아보겠습니다.
1. async
함수 선언하기
async/await
를 사용하려면 우선 비동기 처리가 필요한 함수에 async
키워드를 붙여줘야 합니다. 이렇게 선언된 함수는 항상 프로미스를 반환하게 됩니다.
async function fetchData() {
// 비동기 로직 작성
}
위의 코드에서 fetchData
함수는 async
키워드로 선언되었습니다.
2. await
키워드로 비동기 작업 처리하기
await
키워드는 async
함수 내부에서만 사용할 수 있으며, 프로미스가 처리될 때까지 함수의 실행을 일시 중지합니다.
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
}
위의 코드에서 await
키워드를 사용하여 fetch
함수와 response.json()
함수의 처리가 완료될 때까지 대기하고, 그 결과를 response
와 data
변수에 할당합니다.
3. try-catch
문으로 에러 처리하기
await
키워드로 대기하는 동안 오류가 발생하면 프로미스가 reject
상태로 전환되고, 오류를 처리하기 위해 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:', error);
throw error;
}
}
위의 코드에서 try
블록 내부에서 오류가 발생하면 catch
블록으로 제어가 이동하고, 오류를 콘솔에 출력한 후에 다시 오류를 던집니다.
4. async/await
중첩 사용하기
async/await
는 여러 비동기 작업을 순차적으로 수행해야 하는 경우에도 유용하게 사용될 수 있습니다. 이를 위해 중첩된 async
함수를 작성할 수 있습니다.
async function fetchData() {
const response1 = await fetch('https://api.example.com/data1');
const data1 = await response1.json();
const response2 = await fetch('https://api.example.com/data2');
const data2 = await response2.json();
// 데이터 처리 및 반환
return { data1, data2 };
}
위의 코드에서 fetch
함수를 이용해 서로 다른 API로부터 데이터를 가져오고, 가져온 데이터를 data1
과 data2
변수에 할당한 후 최종 결과를 반환합니다.
결론
async/await
는 자바스크립트 비동기 작업을 처리하는 더 간편하고 직관적인 방법을 제공합니다. 이를 이용하여 코드 분석을 수행하면 비동기 작업을 보다 쉽게 이해하고 처리할 수 있습니다. async/await
를 활용하여 자바스크립트 코드를 작성할 때는 async
함수 선언과 await
키워드를 올바르게 사용하고, 오류 처리에도 적절한 try-catch
문을 활용하는 것이 중요합니다.