「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Promise のスコープ内にない非同期コールバックのエラーはどのように処理できますか?

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

2024 年 11 月 4 日に公開
ブラウズ:688

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

Promise Chaining による非同期エラー処理

非同期コードを扱う場合、エラーを効果的に処理する方法を考慮することが重要です。キャッチされない例外によってアプリケーションがクラッシュする可能性があるため、適切な戦略を立てることが重要です。

説明したシナリオでは、エラーをスローする setTimeout を使用して Promise が作成されます。このエラーは非同期コールバック内で発生するため、Bluebird Promise のキャッチ ハンドラはキャッチしません。

Promises 内の例外処理

Promises 内でスローされる例外はキャッチできます。独自のコールバック関数。このタイプのエラーを処理するには、次のようにすることができます。

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(done, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}

ここでは、エラーは then コールバック内でスローされ、Promise の catch ハンドラーによって確実にキャッチされます。

非同期コールバックに関する注意事項

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

  1. Promise.lay の使用: Promise.lay は、Promise を返す非同期コールバックをラップします。コールバック内でスローされたエラーはすべて Promise によって捕捉されます。
  2. 周囲の Promise を拒否する: 可能な限り、例外をスローする代わりに、非同期コールバックを囲む Promise を拒否します。

不正な非同期コールバックの処理例

Node.js またはブラウザで不正な非同期コールバックを処理するには、次のアプローチを使用できます。

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(function() {
      try {
        // Your rogue async callback here
        console.log("hihihihi");
      } catch (e) {
        reject(e);
      }
    }, 500);
  });
}

このアプローチでは、コールバック内の例外を手動で処理することで、アプリケーションがクラッシュすることがなくなります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3