ホームページ > 記事 > ウェブフロントエンド > Promise のスコープ内にない非同期コールバックのエラーはどのように処理できますか?
Promise Chaining による非同期エラー処理
非同期コードを扱う場合、エラーを効果的に処理する方法を考慮することが重要です。キャッチされない例外によってアプリケーションがクラッシュする可能性があるため、適切な戦略を立てることが重要です。
説明したシナリオでは、エラーをスローする setTimeout を使用して Promise が作成されます。このエラーは非同期コールバック内で発生するため、Bluebird Promise のキャッチ ハンドラはキャッチしません。
Promises 内の例外処理
ただし、Promise 内でスローされる例外はキャッチできます。独自のコールバック関数。このタイプのエラーを処理するには、次のことができます。
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(done, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
ここでは、エラーは then コールバック内でスローされ、Promise の catch ハンドラーによって確実にキャッチされます。
非同期コールバックに関する注意事項
Promise は、自身の範囲外の非同期コールバックからの例外をキャッチしないことを覚えておくことが重要です。このようなタイプのエラーを処理するには、次のことを検討してください。
不正な非同期コールバックの処理例
Node.js またはブラウザーで不正な非同期コールバックを処理するには、次のアプローチを使用できます。
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(function() { try { // Your rogue async callback here console.log("hihihihi"); } catch (e) { reject(e); } }, 500); }); }</code>
このアプローチでは、コールバック内の例外を手動で処理することで、アプリケーションがクラッシュしないようにします。
以上がPromise のスコープ内にない非同期コールバックのエラーはどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。