>  기사  >  웹 프론트엔드  >  Promise는 비동기식으로 구현됩니다.

Promise는 비동기식으로 구현됩니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-04-17 16:03:151496검색

이번에는 비동기 구현을 위한 Promise에 대해 소개하겠습니다. 비동기 구현을 위한 Promise의 Notes는 무엇인가요?

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

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

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

오류는 catch 메서드를 사용하여 캡처되지 않으므로 asyncFunc() 함수가 거부되면 발생한 오류는 처리되지 않습니다.

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

브라우저에서 처리되지 않은 약속 오류

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

처리되지 않은 거부

처리되지 않은 Promise 오류를 포착하려면 unhandledrejection 이벤트를 들어보세요:

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

이 이벤트는 가장 중요한 두 가지 properties

을 포함하는 PromiseRejectionEvent 인스턴스입니다. 약속: 약속 거부

이유: Promise

의 가치를 거부합니다. 샘플 코드:

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

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

거절 처리됨

Promise 오류가 처음에 처리되지 않았지만 나중에 처리되면 Rejectionhandled 이벤트가 트리거됩니다.

window.addEventListener('rejectionhandled', 이벤트 => ···);

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

샘플 코드:

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);

Node.js

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

process.on('unhandledRejection', (이유, 약속) => ···);

샘플 코드:

process.on('unhandledRejection', reason =>
{
console.log(reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();

참고: Node.js v6.6.0+는 기본적으로 처리되지 않은 Promise 오류를 보고하므로 unhandledrejection 이벤트를 수신하지 않아도 문제가 없습니다.

Fundebug의 Node.js 오류 모니터링 플러그인은 unhandledRejection 이벤트를 수신하여 처리되지 않은 Promise 오류를 자동으로 포착할 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:



위 내용은 Promise는 비동기식으로 구현됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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