>웹 프론트엔드 >JS 튜토리얼 >Bluebird Promise로 비동기 예외를 어떻게 처리할 수 있나요?

Bluebird Promise로 비동기 예외를 어떻게 처리할 수 있나요?

DDD
DDD원래의
2024-10-26 04:36:02802검색

How Can I Handle Asynchronous Exceptions with Bluebird Promises?

Bluebird Promise로 비동기 예외 처리

비동기 루틴으로 작업할 때 예외 처리는 관리하기 까다로울 수 있습니다. Bluebird.js의 핵심 기능인 Promise는 비동기 예외를 처리하는 구조화된 방법을 제공합니다.

도전

코드 예제에서 setTimeout은 약속하지 않은 콜백. 이 콜백 내에서 오류가 발생하면 Bluebird의 catch가 트리거되지 않아 프로그램이 충돌하게 됩니다.

Bluebird의 Promise 구조

콜백 내에서 발생하는 예외를 차단하는 것을 약속합니다. 함수(then/catch/Promise 생성자). 비동기 콜백의 예외를 처리하려면 이를 Promise로 래핑하는 것이 중요합니다.

우아한 예외 처리

귀하의 시나리오에서는 setTimeout 콜백을 Promise에 포함할 수 있습니다. . 그러면 catch 블록이 오류를 포착합니다.

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    setTimeout(resolve, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}</code>

거부가 핵심입니다

Promise가 아닌 콜백 내에서 직접 오류를 발생시키지 마세요. 대신 주변 약속을 거부하십시오. 필요한 경우 try-catch를 사용하여 적절한 처리를 보장하세요.

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    try {
      setTimeout(resolve, 500);
    } catch (err) {
      reject(err);
    }
  });
}</code>

이러한 원칙을 준수하면 악성 비동기 콜백의 경우에도 Node.js와 브라우저 모두에서 정상적인 예외 처리를 보장할 수 있습니다.

위 내용은 Bluebird Promise로 비동기 예외를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.