Rumah  >  Artikel  >  hujung hadapan web  >  Bilakah saya harus menggunakan `return await promise` berbanding `return promise` dalam JavaScript?

Bilakah saya harus menggunakan `return await promise` berbanding `return promise` dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-11-17 22:58:02317semak imbas

 When should I use `return await promise` over `return promise` in JavaScript?

Return waiting Promise vs Return Promise

Dalam JavaScript, perbezaan antara return await promise dan return promise dalam fungsi tak segerak selalunya halus. Walau bagaimanapun, terdapat senario tertentu yang menunjukkan tingkah laku yang berbeza, seperti yang diterokai di bawah:

Kelewatan dan Kebolehmerhatian:

Dalam contoh kod yang disediakan, fungsi delay1Second menggunakan kedua-dua pendekatan kembali Janji yang diselesaikan selepas kelewatan 1 saat. Kedua-dua versi kelihatan berkelakuan serupa dari segi hasil yang boleh diperhatikan.

Pengendalian Ralat:

Lazimnya, kedua-dua pendekatan tidak memberi kesan kepada pengendalian ralat dalam fungsi tak segerak atau penyebaran kesilapan kepada pemanggil. Dalam kedua-dua kes, ralat akan keluar daripada Janji fungsi.

Penggunaan Memori:

Walaupun tidak dapat diperhatikan secara langsung, versi janji yang menanti pulangan mungkin meningkatkan sedikit penggunaan memori berbanding kepada pendekatan janji pulangan. Ini kerana objek Promise tambahan mungkin dibuat dan ditunggu semasa pelaksanaan.

Cuba-Tangkap Blok:

Perbezaan yang halus tetapi penting timbul apabila menggunakan pendekatan ini semasa percubaan -menangkap blok. Pertimbangkan contoh berikut:

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!";
  }
}

Dalam penolakanWithReturnAwait, penolakan yang ditunggu melemparkan pengecualian, yang ditangkap dalam blok tangkapan. Akibatnya, fungsi itu memutuskan kepada "Disimpan!".

Sebaliknya, dalam rejectionWithReturn, penolakan dikembalikan terus tanpa menunggu dalam fungsi async. Ini bermakna blok tangkapan tidak dilaksanakan dan sebaliknya pemanggil menerima penolakan.

Kesimpulan:

Walaupun perbezaan antara pulangan menunggu janji dan pulangan janji biasanya diabaikan , adalah penting untuk mengetahui kemungkinan implikasi apabila menggunakan blok cuba-tangkap. Dalam kebanyakan kes, mana-mana pendekatan boleh digunakan dengan impak yang minimum. Walau bagaimanapun, untuk pengendalian ralat yang tepat dalam blok cuba-tangkap, janji tunggu pulangan harus diutamakan untuk memastikan penolakan ditangkap dan dikendalikan dengan betul dalam fungsi async.

Atas ialah kandungan terperinci Bilakah saya harus menggunakan `return await promise` berbanding `return promise` dalam JavaScript?. 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