Apabila bekerja dengan kod tak segerak, pembangun sering menghadapi dilema untuk memilih antara async/wait dan .then().tangkap(). Kedua-dua pendekatan menawarkan cara untuk mengendalikan tugas tak segerak, tetapi bolehkah ia digabungkan untuk hasil yang optimum?
Menggunakan Async/Await dan .then().catch() Bersama
Pertimbangkan coretan kod berikut:
<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>
Di sini, sintaks async/waiit digunakan untuk menjeda pelaksanaan fungsi sementara menunggu hasil anotherCall(). Walau bagaimanapun, .then().catch() juga digunakan untuk mengendalikan ralat atau melakukan transformasi tambahan.
Isu Potensi
Semasa menggunakan async/menunggu dan .then( ).catch() bersama-sama mungkin kelihatan mudah, ia boleh memperkenalkan beberapa isu yang berpotensi:
Alternatif yang Lebih Baik: Async/Tunggu dan cuba/tangkap
Untuk mengelakkan isu ini, adalah disyorkan untuk gunakan async/tunggu dengan try/catch dan bukannya .then().catch(). Pendekatan ini memastikan struktur kod yang bersih dan ringkas sambil mengekalkan keupayaan pengendalian ralat.
<code class="javascript">async function asyncCall() { try { const results = await anotherCall(); return results; } catch (error) { //handle errors here } }</code>
Dalam contoh ini, blok cuba/tangkap mengendalikan sebarang ralat yang dilemparkan oleh anotherCall() dan menyediakan lokasi terpusat untuk pengendalian ralat.
Atas ialah kandungan terperinci Bolehkah Async/Await dan .then().catch() Bekerja Bersama untuk Kod Asynchronous yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!