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 중국어 웹사이트의 기타 관련 기사를 참조하세요!