ホームページ >ウェブフロントエンド >jsチュートリアル >Await と Promise Return: エラー処理ではどちらを使用する必要がありますか?
待機と約束の返却: 待機と約束の返却について理解する
はじめに:
JavaScript では、Promise を使用して非同期タスクを処理できます。非同期関数で Promise を扱うとき、よくあるジレンマが生じます。return await Promise を使用するべきか、それとも単純に return Promise を使用するべきでしょうか。この記事では、これら 2 つのアプローチの違いを調査し、動作のニュアンスとエラー処理への影響を強調します。
動作とパフォーマンス:
一般に、大きな違いはありません。 return await Promise と return Promise を使用する間の観察可能な動作。どちらのアプローチでも同じ結果が得られ、パフォーマンスの変動は無視できます。ただし、中間 Promise オブジェクトが作成される可能性があるため、実装では return await バージョンがわずかに優先される場合があります。
エラー処理:
重要な違いは、return または return の場合に現れます。 return await は try-catch ブロック内で使用されます。次のコード スニペットを考えてみましょう。
async function rejectionWithReturnAwait () { try { return await Promise.reject(new Error()) } catch (e) { return 'Saved!' } } async function rejectionWithReturn () { try { return Promise.reject(new Error()) } catch (e) { return 'Saved!' } }
rejectionWithReturnAwait では、非同期関数は結果を返す前に拒否された Promise を待ちます。これにより例外がトリガーされ、catch 句によってキャッチされ、関数は「Saved!」に解決される Promise を返します。
対照的に、rejectionWithReturn は、拒否された Promise を非同期関数内で待たずに直接返します。 。その結果、catch ケースは呼び出されず、promise の拒否が呼び出し元に伝播されます。
結論:
ほとんどの場合、return await Promise と return Promise の両方が行われます。同じ動作をします。ただし、try-catch ブロック内にエラー処理が含まれる場合、return await Promise は Promise が待機され、例外が外側の関数によってキャッチされることを保証します。一方、return Promise は関数内でエラー処理を行わずに Promise を直接返します。
以上がAwait と Promise Return: エラー処理ではどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。