Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah Async/Await dan .then().catch() Bekerja Bersama untuk Kod Asynchronous yang Cekap?

Bolehkah Async/Await dan .then().catch() Bekerja Bersama untuk Kod Asynchronous yang Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 14:19:02374semak imbas

Can Async/Await and .then().catch() Work Together for Efficient Asynchronous Code?

Pengaturcaraan Asynchronous dengan Async/Await and .then().catch()

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:

  • Lekukan Tidak Perlu: Gabungan mencipta tahap lekukan yang tidak perlu, menjadikan kod kurang boleh dibaca dan diselenggara.
  • Mencampurkan Janji dan Async/Await: Menggunakan .then().catch() melibatkan kerja dengan Promises, manakala async/wait menggunakan sintaks dan mekanisme pengendalian ralat yang berbeza. Ini boleh membawa kepada kekeliruan dan tingkah laku yang tidak dijangka.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn