자바스크립트 async/await 사용법, 비동기 함수와 에러 처리
자바스크립트에서 비동기 프로그래밍은 웹 애플리케이션의 성능을 극대화하고 사용자 경험을 향상시키는 데 필수적입니다. async
와 await
키워드는 자바스크립트의 비동기 작업을 간단하고 읽기 쉽게 만들어 줍니다. 이 글에서는 async
와 await
의 기본 개념부터 실제 사용 예제와 에러 처리 방법까지 다루어 보겠습니다.
1. async/await란?
async
와 await
는 ES2017(ES8)에서 도입된 자바스크립트의 비동기 처리 문법입니다. async
함수는 항상 프로미스를 반환하며, await
키워드는 프로미스가 처리될 때까지 함수 실행을 일시 정지시킵니다.
2. 기본 사용법
async
키워드를 함수 앞에 붙여서 비동기 함수를 선언할 수 있습니다. await
키워드는 async
함수 내에서만 사용할 수 있으며, 프로미스가 해결될 때까지 기다립니다.
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
}
3. 실제 예제
async
와 await
를 사용하면 비동기 코드가 마치 동기 코드처럼 읽히게 됩니다. 아래 예제는 데이터를 가져와서 출력하는 비동기 함수입니다.
async function getUserData() {
try {
const response = await fetch('https://api.example.com/user');
const user = await response.json();
console.log(user);
} catch (error) {
console.error('Error fetching user data:', error);
}
}
getUserData();
4. 에러 처리 방법
async
함수 내에서 await
키워드를 사용한 비동기 호출은 try...catch
블록을 사용하여 에러를 처리할 수 있습니다. 이는 프로미스의 .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 fetching data:', error);
throw error;
}
}
5. 병렬 작업 처리
await
키워드를 사용하면 비동기 작업을 직렬로 처리하게 됩니다. 병렬로 작업을 처리하려면 Promise.all()
을 사용하여 여러 프로미스를 동시에 실행할 수 있습니다.
async function fetchAllData() {
try {
const [data1, data2] = await Promise.all([
fetch('https://api.example.com/data1').then(res => res.json()),
fetch('https://api.example.com/data2').then(res => res.json())
]);
console.log(data1, data2);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchAllData();
6. 결론
async
와 await
는 자바스크립트 비동기 프로그래밍을 단순화하고 가독성을 높이는 강력한 도구입니다. 이 가이드를 통해 비동기 함수 작성과 에러 처리, 병렬 작업 처리 방법을 익히고, 실제 프로젝트에서 async
와 await
를 활용해 보세요.
'프로그래밍 언어 > 자바스크립트' 카테고리의 다른 글
자바스크립트 DOM, 웹 페이지 동적 조작 (0) | 2024.08.07 |
---|---|
자바스크립트(JavaScript) 비동기 처리 실전 예제 (0) | 2024.08.06 |
자바스크립트 프로미스(Promise)와 비동기 프로그래밍 (0) | 2024.08.03 |
자바스크립트(JavaScript) 콜백 함수와 콜백 지옥 해결 방법 (0) | 2024.08.02 |
자바스크립트 비동기 프로그래밍 이벤트 루프, 콜백, 프로미스, async/await (0) | 2024.08.01 |