JavaScript の return await Promise と return Promise: 動作の違い
はじめに
JavaScript で非同期コードを扱う場合、開発者は Promise を管理するために async/await メカニズムを使用することがよくあります。ただし、非同期関数で Promise を返す場合は、return await Promise と return Promise という 2 つのバリエーションを考慮する必要があります。この記事では、これらのアプローチの微妙な違いについて詳しく説明します。
動作の違い
ほとんどの場合、return await Promise と return Promise の間に目立った違いはありません。どちらも解決または拒否する Promise を生成し、同じ観察可能な動作を提供します。
ただし、try-catch ブロックを使用すると、違いが明らかになります。次の例を考えてみましょう:
async function rejectionWithReturnAwait() { try { return await Promise.reject(new Error()); } catch (e) { return 'Saved!'; } }
この場合、return await により、拒否された Promise が非同期関数内で確実にキャッチされ、catch 句の実行が許可され、「Saved!」に解決される Promise が返されます。
async function rejectionWithReturn() { try { return Promise.reject(new Error()); } catch (e) { return 'Saved!'; } }
対照的に、return Promise は、拒否された Promise を async 関数内で待たずに直接返します。これは、拒否が catch 句によってキャプチャされず、呼び出し元が代わりに拒否を受け取ることを意味します。
影響
return await Promise と return Promise の選択は依存します。望ましい動作について。非同期関数内のエラー処理が重要な場合は、return await Promise を使用して、エラーが確実に捕捉され、それに応じて処理されるようにする必要があります。それ以外の場合は、return Promise を使用して、不必要なネストを回避することでパフォーマンスを最適化できます。
以上がJavaScript で「return Promise」ではなく「Return await Promise」を選択する理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。