[javascript] 비동기 함수의 에러 처리 방법
JavaScript에서 비동기 함수를 사용할 때, 콜백 함수 또는 프로미스를 이용하여 비동기 작업을 처리합니다. 이때 발생할 수 있는 에러를 올바르게 처리하기 위해서는 다음과 같은 방법을 고려할 수 있습니다.
1. 콜백 함수를 이용한 에러 처리
비동기 함수에서 콜백 함수를 사용하여 작업을 완료한 후 에러 여부를 체크할 수 있습니다. 콜백 함수의 첫 번째 매개변수로 에러를 받아서 처리할 수 있습니다.
function asyncFunction(callback) {
setTimeout(function() {
const error = null; // 에러 발생 여부에 따라 값을 설정
if (error) {
callback(error);
} else {
callback(null, result);
}
}, 1000);
}
asyncFunction(function(error, result) {
if (error) {
console.error("에러 발생:", error);
} else {
console.log("결과:", result);
}
});
2. 프로미스를 이용한 에러 처리
ES6부터는 프로미스를 이용하여 비동기 함수를 처리할 수 있습니다. then
과 catch
메서드를 사용하여 성공 및 실패 시에 각각 다른 작업을 처리할 수 있습니다.
function asyncFunction() {
return new Promise((resolve, reject) => {
setTimeout(function() {
const error = null; // 에러 발생 여부에 따라 값을 설정
if (error) {
reject(error);
} else {
resolve(result);
}
}, 1000);
});
}
asyncFunction()
.then(result => {
console.log("결과:", result);
})
.catch(error => {
console.error("에러 발생:", error);
});
3. async/await를 이용한 에러 처리
ES8에서 추가된 async/await를 이용하여 비동기 함수를 동기적으로 처리할 수 있습니다. try-catch
블록을 이용하여 에러를 처리할 수 있습니다.
async function asyncFunction() {
return new Promise((resolve, reject) => {
setTimeout(function() {
const error = null; // 에러 발생 여부에 따라 값을 설정
if (error) {
reject(error);
} else {
resolve(result);
}
}, 1000);
});
}
(async function() {
try {
const result = await asyncFunction();
console.log("결과:", result);
} catch (error) {
console.error("에러 발생:", error);
}
})();
이러한 방법들을 사용하여 JavaScript의 비동기 함수에서 발생하는 에러를 적절하게 처리할 수 있습니다.