Rumah >hujung hadapan web >tutorial js >Mengapa Pilih `return await promise` daripada `return promise` dalam JavaScript?
kembali menanti janji vs. mengembalikan janji dalam JavaScript: Perbezaan Tingkah Laku
Pengenalan
Bila bekerja dengan kod tak segerak dalam JavaScript, pembangun sering menggunakan mekanisme async/menunggu untuk mengurus Janji. Walau bagaimanapun, terdapat dua variasi yang perlu dipertimbangkan semasa mengembalikan Janji dalam fungsi tak segerak: kembali menunggu janji dan janji kembali. Artikel ini menyelidiki nuansa antara pendekatan ini.
Perbezaan Tingkah Laku
Dalam kebanyakan kes, tiada perbezaan ketara antara pulangan menunggu janji dan janji pulangan. Kedua-duanya akan menghasilkan Janji yang menyelesaikan atau menolak, memberikan kelakuan yang boleh diperhatikan yang sama.
Walau bagaimanapun, perbezaan menjadi jelas apabila menggunakan blok cuba-tangkap. Pertimbangkan contoh ini:
async function rejectionWithReturnAwait() { try { return await Promise.reject(new Error()); } catch (e) { return 'Saved!'; } }
Dalam kes ini, pemulangan menunggu memastikan Janji yang ditolak ditangkap dalam fungsi async, membenarkan klausa tangkapan dilaksanakan dan mengembalikan Janji yang diselesaikan kepada "Disimpan!".
async function rejectionWithReturn() { try { return Promise.reject(new Error()); } catch (e) { return 'Saved!'; } }
Sebaliknya, return promise mengembalikan Promise yang ditolak terus tanpa menunggunya dalam fungsi async. Ini bermakna penolakan tidak ditangkap oleh klausa tangkapan, dan pemanggil menerima penolakan sebaliknya.
Implikasi
Pilihan antara janji pulang menunggu dan janji pulangan bergantung pada tingkah laku yang diingini. Jika pengendalian ralat dalam fungsi async adalah penting, janji pulangan menunggu harus digunakan untuk memastikan ralat ditangkap dan dikendalikan dengan sewajarnya. Jika tidak, janji pulangan boleh digunakan untuk mengoptimumkan prestasi dengan mengelakkan sarang yang tidak perlu.
Atas ialah kandungan terperinci Mengapa Pilih `return await promise` daripada `return promise` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!