Rumah >hujung hadapan web >tutorial js >Apakah Perbezaan Antara `return await Promise` dan `return Promise` dalam JavaScript Asynchronous?
Memahami Perbezaan antara pulangan menunggu janji dan pulangan janji
Dalam JavaScript tak segerak, tingkah laku pulangan menunggu janji dan janji pulangan selalunya subjek perbahasan. Walaupun kedua-dua ungkapan melibatkan pemulangan janji, perbezaan halus boleh timbul dalam senario tertentu.
Fungsi Asynchronous
Dalam sampel kod yang disediakan, dua fungsi tak segerak (delay1Second) ditakrifkan. Fungsi pertama menggunakan return await untuk membalut hasil janji kelewatan dalam janji lain, manakala fungsi kedua hanya mengembalikan janji kelewatan tanpa menunggunya.
Tingkah Laku Yang Boleh Diperhatikan
Dalam kebanyakan kes, tiada perbezaan yang ketara antara kedua-dua binaan ini. Kedua-dua fungsi delay1Second mengembalikan janji yang diselesaikan selepas 1 saat. Walau bagaimanapun, seperti yang dinyatakan dalam soalan, versi menunggu pemulangan mungkin menggunakan lebih sedikit memori disebabkan penciptaan objek janji perantaraan.
Pengendalian Pengecualian
Walau bagaimanapun, a perbezaan kritikal muncul apabila ungkapan ini digunakan dalam blok cuba-tangkap. 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 fungsi pertama (rejectionWithReturnAwait), pulangan dibalut dengan tunggu. Ini bermakna bahawa fungsi akan menunggu janji yang ditolak untuk ditolak, yang akan menyebabkan pengecualian dilemparkan dalam blok async. Akibatnya, pengendali tangkapan dicapai, dan fungsi mengembalikan janji yang diselesaikan kepada 'Disimpan!'.
Sebaliknya, dalam fungsi kedua (rejectionWithReturn), janji dikembalikan terus tanpa menunggu dalam async fungsi. Ini bermakna pengecualian tidak berlaku dalam blok async, dan pengendali tangkapan tidak dilaksanakan. Sebaliknya, pemanggil hanya menerima janji yang ditolak.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `return await Promise` dan `return Promise` dalam JavaScript Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!