"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Promise 범위에 속하지 않는 비동기 콜백의 오류를 어떻게 처리할 수 있나요?

Promise 범위에 속하지 않는 비동기 콜백의 오류를 어떻게 처리할 수 있나요?

2024-11-04에 게시됨
검색:629

How Can You Handle Errors in Asynchronous Callbacks That Are Not Within a Promise\'s Scope?

프라미스 체인을 사용한 비동기 오류 처리

비동기 코드로 작업할 때는 오류를 효과적으로 처리하는 방법을 고려하는 것이 중요합니다. 포착되지 않은 예외로 인해 애플리케이션이 중단될 수 있으므로 전략을 마련하는 것이 중요합니다.

설명된 시나리오에서는 오류를 발생시키는 setTimeout을 사용하여 Promise가 생성됩니다. 이 오류는 비동기 콜백 내에서 발생하기 때문에 Bluebird Promise의 catch 핸들러는 이 오류를 포착하지 않습니다.

Promise 내의 예외 처리

그러나 Promise는 내부에서 발생하는 예외를 포착할 수 있습니다. 자신만의 콜백 함수. 이러한 유형의 오류를 처리하려면 다음을 수행할 수 있습니다.

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(done, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}

여기서 오류는 then 콜백 내에서 발생하므로 Promise의 catch 핸들러에서 이를 포착할 수 있습니다.

비동기 콜백에 대한 주의사항

Promise는 자신의 범위에 속하지 않는 비동기 콜백에서 예외를 포착하지 않는다는 점을 기억하는 것이 중요합니다. 이러한 유형의 오류를 처리하려면 다음을 고려하십시오.

  1. Promise.delay 사용: Promise.delay는 비동기 콜백을 래핑하여 Promise를 반환합니다. 콜백 내에서 발생하는 모든 오류는 Promise에 의해 포착됩니다.
  2. 주변 Promise 거부: 가능하다면 예외를 발생시키는 대신 비동기 콜백 주변의 Promise를 거부하세요.

불량 비동기 콜백 처리 예시

Node.js나 브라우저에서 불량 비동기 콜백을 처리하려면 다음 접근 방식을 사용할 수 있습니다.

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(function() {
      try {
        // Your rogue async callback here
        console.log("hihihihi");
      } catch (e) {
        reject(e);
      }
    }, 500);
  });
}

콜백 내의 예외를 수동으로 처리함으로써 이 접근 방식은 애플리케이션이 충돌하지 않도록 보장합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3