Throw の代わりに Promise.reject を使用する場合は?

Patricia Arquette
リリース: 2024-10-24 05:25:30
オリジナル
215 人が閲覧しました

When to Use Promise.reject Instead of Throw?

Promise.reject と throw : 違いを明らかにする

JavaScript 開発でよくあるジレンマは、Promise.reject と throw の違いを理解することです。エラーです。どちらの戦略もエラーの処理に使用できますが、特定のシナリオでは微妙な違いが現れます。

Promise コールバックのコンテキストでは、 throw を使用するとエラーが効果的に通知され、次の catch ハンドラーがエラーをキャプチャします。ただし、Promise コールバックの外側で作業する場合、throw が使用されている場合、catch ハンドラーは呼び出されません。これを解決するには、代わりに Promise.reject を使用する必要があります。

次のコードを検討してください:

Promise.reject の使用:

<code class="javascript">return asyncIsPermitted()
    .then(function(result) {
        if (result === true) {
            return true;
        }
        else {
            return Promise.reject(new PermissionDenied());
        }
    });</code>
ログイン後にコピー

throw の使用:

<code class="javascript">return asyncIsPermitted()
    .then(function(result) {
        if (result === true) {
            return true;
        }
        else {
            throw new PermissionDenied();
        }
    });</code>
ログイン後にコピー

上記の例では、 throw アプローチにより、任意の Promise コールバックで catch ハンドラーがトリガーされます。ただし、asyncIsPermitted() が Promise ではなく、(setTimeout などを使用して) 非同期処理を実行する関数である場合、スローは catch によって処理されません。このような場合、エラーが確実にキャプチャされるように Promise.reject を使用する必要があります。

したがって、その簡潔さのために throw の方が望ましいかもしれませんが、Promise.reject はより柔軟性があり、確実にキャプチャするために必要な場合に使用する必要があります。非 Promise コールバック コンテキストでのエラー処理。

以上がThrow の代わりに Promise.reject を使用する場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!