ホームページ  >  記事  >  ウェブフロントエンド  >  Promise のスコープ内にない非同期コールバックのエラーはどのように処理できますか?

Promise のスコープ内にない非同期コールバックのエラーはどのように処理できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 10:06:02829ブラウズ

How Can You Handle Errors in Asynchronous Callbacks That Are Not Within a Promise's Scope?

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 は、自身の範囲外の非同期コールバックからの例外をキャッチしないことを覚えておくことが重要です。このようなタイプのエラーを処理するには、次のことを検討してください。

  1. Promise.lay の使用: Promise.lay は、Promise を返す非同期コールバックをラップします。コールバック内でスローされたエラーはすべて、Promise によって捕捉されます。
  2. 周囲の Promise の拒否: 可能な限り、例外をスローする代わりに、非同期コールバックの周囲の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。