[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부터는 프로미스를 이용하여 비동기 함수를 처리할 수 있습니다. thencatch 메서드를 사용하여 성공 및 실패 시에 각각 다른 작업을 처리할 수 있습니다.

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의 비동기 함수에서 발생하는 에러를 적절하게 처리할 수 있습니다.

참고 자료