[javascript] 에러 처리를 위한 프로미스 활용 방법

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

참고 자료: