未処理の Promise エラーをキャッチする

一个新手
リリース: 2017-10-13 09:21:23
オリジナル
2157 人が閲覧しました

未処理の Promise エラーは、unhandledrejection イベントをリッスンすることで捕捉できます。

読みやすさを確保するために、この記事は直訳ではなく意訳を使用し、ソースコードは大幅に変更されています。また、この記事の著作権は原著者に帰属し、翻訳は学習のみを目的としています。

Promiseを使用して非同期コードを作成する場合は、rejectを使用してエラーを処理します。場合によっては、開発者は通常これを無視し、その結果、一部のエラーが処理されないことがあります。例:

function main() {
asyncFunc()
.then(···)
.then(() => console.log('Done!'));
}
ログイン後にコピー

catchメソッドはエラーをキャッチするために使用されないため、asyncFunc()関数rejectを実行する場合、スローされたエラーは処理されません。

このブログでは、ブラウザと Node.js でそれぞれ未処理の Promise エラーを捕捉する方法を紹介します。

ブラウザでの未処理の Promise エラー

一部のブラウザ (Chrome など) は、未処理の Promise エラーをキャッチできます。

unhandledrejection

未処理の Promise エラーをキャプチャするには、unhandledrejection イベントをリッスンします:

window.addEventListener(
'unhandledrejection', event => ···);
ログイン後にコピー


このイベントは PromiseRejectionEven 例として、これには 2 つの最も重要なプロパティがあります:

  • promise: Promise を拒否しますpromise: reject的Promise

  • reason

reason: Promise の拒否値

サンプルコード:


window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();
ログイン後にコピー

ファンデバグさんJavaScript エラー監視プラグインは

unhandledrejection

イベントをリッスンするため、未処理の Promise エラーを自動的にキャプチャできます。

rejectionhandled

Promise エラーが最初は処理されず、後で処理されると、rejectionhandled イベントがトリガーされます:
window.addEventListener(
'rejectionhandled', event => ···);
ログイン後にコピー

このイベントは

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のUnhandled Promiseエラー

UnhandledRejectionイベントをリッスンして、アンハンドをキャプチャしますLED プロミス エラー:
process.on(
'unhandledRejection', (reason, promise) => ···);
ログイン後にコピー

サンプルコード:
process.on('unhandledRejection', reason =>
{
console.log(reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();
ログイン後にコピー
🎜🎜

以上が未処理の Promise エラーをキャッチするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート