Rumah > hujung hadapan web > tutorial js > 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
Lepaskan: 2024-11-03 14:19:02
asal
457 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan