Bluebird Promise를 사용한 비동기 예외 처리
Q: Bluebird Promise를 사용한 비동기 콜백에서 처리되지 않은 예외를 어떻게 처리합니까?
Bluebird promise는 도메인과 달리 본질적으로 비동기 콜백에서 발생한 예외를 포착하지 않습니다.
A: Promise 생성자 또는 then() 클로저를 사용하여 예외 처리
비동기 콜백에서 예외를 포착하려면 콜백을 Promise 생성자 또는 then() 클로저로 래핑하세요.
<code class="javascript">function getPromise(){ return new Promise(function(done, reject){ setTimeout(function(){ throw new Error("AJAJAJA"); }, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
사용자 정의 비동기 콜백에 던지는 것을 피하세요
절대 안 함 사용자 정의 비동기 콜백에서 직접 예외를 발생시킵니다(Promise 콜백 외부). 대신, 주변 Promise를 거부하세요:
<code class="javascript">function getPromise(){ return new Promise(function(done, reject){ setTimeout(done, 500); }).then(function() { console.log("hihihihi"); reject(new Error("Oh no!")); }); }</code>
예
Promise 생성자 사용:
<code class="javascript">var p = getPromise(); p.then(function(){ console.log("Yay"); }).error(function(e){ console.log("Rejected",e); }).catch(Error, function(e){ console.log("Error",e); }).catch(function(e){ console.log("Unknown", e); });</code>
출력:
Error [Error: Oh no!]
이 접근 방식을 사용하면 예외를 적절하게 포착하고 처리하여 애플리케이션 충돌을 방지할 수 있습니다.
위 내용은 Bluebird Promise를 사용한 비동기 콜백에서 처리되지 않은 예외를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!