프로미스(Promise)는 자바스크립트에서 비동기 작업을 처리하기 위한 패턴 중 하나입니다. 프로미스는 비동기 작업의 성공과 실패를 다루기 위한 방법을 제공하며, 에러 처리에도 유용하게 사용될 수 있습니다. 이번 글에서는 프로미스를 사용하여 에러 처리를 하는 방법에 대해 알아보겠습니다.
1. catch 메서드를 사용한 에러 처리
프로미스는 연속된 then 메서드로 비동기 작업을 처리할 수 있습니다. 이때 catch 메서드를 체인에 추가하여 에러를 처리할 수 있습니다.
asyncFunction()
.then(result => {
// 비동기 작업이 성공했을 때의 처리
})
.catch(error => {
// 비동기 작업이 실패했을 때의 처리
});
위 코드에서 asyncFunction은 비동기 작업을 수행하는 함수입니다. then 메서드는 비동기 작업이 성공했을 때 호출되는 콜백 함수를 받습니다. catch 메서드는 비동기 작업이 실패했을 때 호출되는 콜백 함수를 받습니다.
2. try-catch 구문과 함께 사용하기
프로미스와 함께 try-catch 구문을 사용하여 에러 처리를 할 수도 있습니다. 이때는 async 함수와 함께 사용해야 합니다.
async function handleError() {
try {
const result = await asyncFunction();
// 비동기 작업이 성공했을 때의 처리
} catch (error) {
// 비동기 작업이 실패했을 때의 처리
}
}
async 함수 안에서 await 키워드를 사용하여 비동기 작업의 결과를 받아올 수 있습니다. await 키워드를 사용한 부분에서 에러가 발생하면 catch 블록으로 제어가 전달됩니다.
3. Promise.all과 함께 사용하기
여러 개의 비동기 작업을 처리할 때에는 Promise.all을 사용하여 모든 작업이 완료될 때까지 대기하고 에러를 처리할 수 있습니다.
const promises = [asyncFunction1(), asyncFunction2(), asyncFunction3()];
Promise.all(promises)
.then(results => {
// 모든 비동기 작업이 성공했을 때의 처리
})
.catch(error => {
// 비동기 작업 중 하나라도 실패했을 때의 처리
});
위 코드에서 asyncFunction1, asyncFunction2, asyncFunction3은 각각 비동기 작업을 수행하는 함수입니다. Promise.all에 배열 형태로 전달된 프로미스들은 모두 완료될 때까지 대기하며, 그 중 하나라도 실패하면 catch 블록으로 제어가 전달됩니다.
결론
프로미스를 사용하여 에러 처리를 하는 방법에 대해 알아보았습니다. catch 메서드를 사용하거나 try-catch 구문과 함께 사용하는 방법, 그리고 Promise.all과 함께 사용하는 방법을 알아보았습니다. 이를 통해 비동기 작업의 에러 처리를 더욱 효과적으로 할 수 있습니다.
참고 자료: