이번에는 비동기 구현을 위한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!