ホームページ  >  記事  >  ウェブフロントエンド  >  Bluebird Promise で非同期例外を処理するにはどうすればよいですか?

Bluebird Promise で非同期例外を処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 04:36:02797ブラウズ

How Can I Handle Asynchronous Exceptions with Bluebird Promises?

Bluebird Promise による非同期例外の処理

非同期ルーチンを使用する場合、例外処理の管理は難しい場合があります。 Bluebird.js の重要な機能である Promise は、非同期例外を処理する構造化された方法を提供します。

課題

コード例では、 setTimeout が非約束のコールバック。このコールバック内でエラーがスローされると、Bluebird の catch はトリガーされず、プログラムがクラッシュします。

Bluebird の Promise 構造

Promise は、コールバック内でスローされた例外をインターセプトします。関数 (then/catch/Promise コンストラクター)。非同期コールバックからの例外を処理するには、例外を Promise でラップすることが重要です。

エレガントな例外処理

シナリオでは、setTimeout コールバックを Promise で囲むことができます。 。次に、catch ブロックがエラーをキャッチします。

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    setTimeout(resolve, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}</code>

Rejection is Key

非 Promise コールバック内で直接エラーをスローしないでください。代わりに、周囲の約束を拒否してください。必要に応じて、try-catch を使用して適切な処理を確保します。

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    try {
      setTimeout(resolve, 500);
    } catch (err) {
      reject(err);
    }
  });
}</code>

これらの原則に従うことで、不正な非同期コールバックであっても、Node.js とブラウザの両方で適切な例外処理を確保できます。

以上がBluebird Promise で非同期例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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