ホームページ >ウェブフロントエンド >jsチュートリアル >エラーは JavaScript Promise チェーンを通じてどのように伝播しますか?
連鎖した Promise: エラー伝播を理解する
Promise チェーンでは、各 Promise の解決または拒否が後続の Promise に影響を与える可能性があります。ただし、エラーは常にチェーンを通じて伝播される必要があるというよくある誤解があります。
Promise Chain の動作
Promise が解決または拒否されると、その then コールバックがトリガーされます。 。成功ハンドラーまたはエラー ハンドラーは、チェーン内の次の Promise の解決となる値または Promise を返すことができます。
Promises でのエラー処理
エラー ハンドラーの場合Promise チェーン内でエラーを再スローしたり、拒否された Promise を返したりしない場合、エラーは後続の Promise に伝播されません。これは、チェーンがエラーをその Promise 内で処理されたものと見なすためです。
伝播とエラー処理
あなたが提供した遅延ノード モジュールの例では、エラーはそうではありません。 Promise1 のエラー ハンドラーがエラーを再スローしないため、Promise2 に伝播されます。エラーを再スローしないことで、エラーが処理されたことがチェーンに通知されます。エラーを伝播するには、コードを次のように変更する必要があります。
promise1.then( function(wins) { console.log('promise1 resolved'); return wins;}, function(err) { console.log('promise1 rejected'); throw err;}); // re-throw error
エラーの再スローとエラー処理
エラーの再スローも同様です。ジョンからジンジャー、そしてボブへ「エラーメモ」を渡すこと。ジンジャーがエラーを処理した場合 (つまり、エラーを再スローしなかった場合)、別のアイテム (緑色のウィジェットなど) を使用してボブのリクエストを満たすことができます。これは、Promise でのエラー処理は、厳密にはエラーを伝播させることではなく、その影響を軽減することでもあるという概念と一致します。
データベースの例では、最初のクエリが失敗すると、最初の Promise のエラー ハンドラーが処理されます。チェーンはエラーを再スローして、後続の Promise に伝播する必要があります。それ以外の場合、チェーンはエラーが処理されたものとみなし、他の挿入を続行します。
以上がエラーは JavaScript Promise チェーンを通じてどのように伝播しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。