非同期コードを扱うとき、開発者は、async/await のどちらを選択するかというジレンマに遭遇することがよくあります。および .then().catch()。どちらのアプローチも非同期タスクを処理する方法を提供しますが、最適な結果を得るために組み合わせることはできますか?
Async/Await と .then().catch() を一緒に使用する
次のコード スニペットを考えてみましょう:
<code class="javascript">async apiCall(params) { var results = await this.anotherCall() .then(results => { //do any results transformations return results; }) .catch(error => { //handle any errors here }); return results; }</code>
ここでは、async/await 構文を使用して、anotherCall() の結果を待機している間に関数の実行を一時停止します。ただし、.then().catch() は、エラーの処理や追加の変換の実行にも使用されます。
潜在的な問題
async/await および .then( ).catch() を組み合わせると便利に見えるかもしれませんが、いくつかの潜在的な問題が発生する可能性があります:
より良い代替案: 非同期/待機と try/catch
これらの問題を回避するには、次のことをお勧めします。 .then().catch() の代わりに、try/catch とともに async/await を使用します。このアプローチにより、エラー処理機能を維持しながら、クリーンで簡潔なコード構造が保証されます。
<code class="javascript">async function asyncCall() { try { const results = await anotherCall(); return results; } catch (error) { //handle errors here } }</code>
この例では、try/catch ブロックは、anotherCall() によってスローされたエラーを処理し、エラー処理の一元的な場所を提供します。
以上がAsync/Await と .then().catch() は効率的な非同期コードのために連携できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。