>  기사  >  웹 프론트엔드  >  처리되지 않은 Promise 오류 잡기

처리되지 않은 Promise 오류 잡기

一个新手
一个新手원래의
2017-10-13 09:21:232138검색

처리되지 않은 프라미스 오류는 unhandledrejection 이벤트를 수신하여 포착할 수 있습니다.

이 기사는 가독성을 보장하기 위해 직역이 아닌 무료 번역을 사용했으며, 소스 코드는 대대적으로 수정되었습니다. 또한, 이 글의 저작권은 원저자에게 있으며, 번역은 학습용으로만 사용됩니다.

Promise를 사용하여 비동기 코드를 작성할 때 reject를 사용하여 오류를 처리하세요. 때때로 개발자는 일반적으로 이를 무시하여 일부 오류가 처리되지 않는 경우가 있습니다. 예를 들면 다음과 같습니다.

function main() {
asyncFunc()
.then(···)
.then(() => console.log('Done!'));
}

catch 메서드로는 오류를 포착하지 못하므로 asyncFunc() 함수 reject 시 발생한 오류는 처리되지 않습니다.

이 블로그에서는 브라우저와 Node.js에서 각각 처리되지 않은 Promise 오류를 잡는 방법을 소개합니다.

브라우저의 처리되지 않은 Promise 오류

일부 브라우저(예: Chrome)에서는 처리되지 않은 Promise 오류를 포착할 수 있습니다.

unhandledrejection

처리되지 않은 Promise 오류를 캡처하려면 unhandledrejection 이벤트를 수신하세요. 이벤트

예: 가장 중요한 2가지 속성이 있습니다: 이유: Promise의 거부 값
promise: 거부 Promise


샘플 코드:

  • window.addEventListener(
    'unhandledrejection', event => ···);

    promise: reject的Promise

  • reason

Fundebug의 JavaScript 오류 모니터링 플러그인은 unhandledrejection 이벤트를 수신하여 처리되지 않은 Promise 오류를 자동으로 캡처할 수 있습니다. rejectionhandled 이벤트가 트리거됩니다.

rejectionhandled

Promise 오류가 처음에 처리되지 않았지만 나중에 처리되면

window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();

이 이벤트는 PromiseRejectionEvent의 인스턴스입니다.

. 샘플 코드:
window.addEventListener(
'rejectionhandled', event => ···);

Node.js의 처리되지 않은 Promise 오류
window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
window.addEventListener('rejectionhandled', event =>
{
console.log('rejection handled'); // 1秒后打印"rejection handled"
});
 
 
function foo()
{
return Promise.reject('Hello, Fundebug!');
}
 
var r = foo();
 
setTimeout(() =>
{
r.catch(e =>{});
}, 1000);

처리되지 않은 Rejection 이벤트를 수신하여 Pro mise 오류:

샘플 코드:

process.on(
'unhandledRejection', (reason, promise) => ···);

위 내용은 처리되지 않은 Promise 오류 잡기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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