[javascript] 비동기 코드의 오류 처리 방법
이 글에서는 JavaScript에서 비동기 코드의 오류 처리 방법에 대해 알아보겠습니다. 비동기 코드는 데이터 로딩, 파일 읽기, 네트워크 요청과 같이 시간이 걸리는 작업을 수행할 때 유용하게 활용됩니다. 그러나 이러한 비동기 작업에서 오류 처리는 매우 중요합니다. 아래에서는 비동기 코드에서 오류를 처리하는 몇 가지 방법을 살펴보겠습니다.
1. 콜백 함수를 이용한 오류 처리
function loadData(callback) {
setTimeout(() => {
const error = false; // 예제를 위한 가상의 오류 상황
if (error) {
callback('Error occurred', null);
} else {
callback(null, 'Data loaded successfully');
}
}, 1000);
}
loadData((error, data) => {
if (error) {
console.error(error);
} else {
console.log(data);
}
});
콜백 함수를 이용하여 오류와 데이터를 전달하는 방식으로 비동기 작업의 오류를 처리할 수 있습니다. 하지만 이 방법은 콜백 지옥(callback hell)과 같은 문제를 야기할 수 있습니다.
2. Promise를 활용한 오류 처리
function loadData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const error = false; // 예제를 위한 가상의 오류 상황
if (error) {
reject('Error occurred');
} else {
resolve('Data loaded successfully');
}
}, 1000);
});
}
loadData()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
Promise를 활용하면 then 및 catch를 사용하여 비동기 작업의 성공 및 실패를 처리할 수 있습니다. 이는 콜백 지옥을 피할 수 있는 장점이 있습니다.
3. async/await 구문을 활용한 오류 처리
async function loadAndHandleData() {
try {
const data = await loadData();
console.log(data);
} catch (error) {
console.error(error);
}
}
loadAndHandleData();
async 및 await 키워드를 사용하여 코드를 보다 선언적이고 동기적으로 작성할 수 있습니다. 이는 가독성과 유지보수성을 향상시키는 장점이 있으며, Promise보다 오류 처리를 직관적으로 할 수 있습니다.
결론
JavaScript에서 비동기 코드의 오류 처리는 콜백 함수, Promise, 그리고 async/await를 활용하여 수행할 수 있습니다. 각 방법마다 장단점이 있으므로 상황에 맞게 적절한 방법을 선택하여 개발하는 것이 중요합니다.
참고 자료: MDN Web Docs - Asynchronous JavaScript