프로미스(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
과 함께 사용하는 방법을 알아보았습니다. 이를 통해 비동기 작업의 에러 처리를 더욱 효과적으로 할 수 있습니다.
참고 자료: