Fungsi Async: Pemulangan Janji Tersirat atau Kawalan Eksplisit?
Fungsi Async dalam JavaScript, dilambangkan dengan kata kunci async, sering dikatakan secara tersirat balas janji. Walau bagaimanapun, pemeriksaan lebih dekat mendedahkan bahawa realitinya lebih bernuansa.
Secara lalai, fungsi async memang akan mengembalikan janji jika janji tidak dikembalikan secara eksplisit. Ini bermakna kod berikut:
1 2 3 4 |
|
sama dengan:
1 2 3 4 |
|
Walau bagaimanapun, jika anda secara eksplisit memulangkan nilai bukan janji, fungsi akan membungkusnya secara automatik dalam janji . Sebagai contoh, dalam contoh berikut:
1 2 3 |
|
getVal sebenarnya akan mengembalikan objek Promise yang mengandungi hasil doSomethingNonAsync().
Perlu diperhatikan bahawa tingkah laku ini berbeza daripada fungsi JavaScript tradisional. Apabila anda secara eksplisit mengembalikan nilai primitif daripada fungsi biasa, ia segera dikembalikan. Fungsi Async, bagaimanapun, sentiasa mengembalikan janji, membalut nilai bukan janji seperti yang diperlukan.
Ini mungkin kelihatan tidak konsisten, tetapi ia bercantum dengan konsep penjana dalam ES6. Penjana ialah fungsi yang tidak mengembalikan nilai yang sama seperti penyata pulangannya. Sebaliknya, ia menghasilkan satu siri nilai, yang boleh diulang menggunakan operator hasil.
Contohnya:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Atas ialah kandungan terperinci Fungsi Async dalam JavaScript: Janji Tersirat atau Nilai Pulangan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!