Rumah >hujung hadapan web >tutorial js >Mengapa async/menunggu Sentiasa Membalas Janji?

Mengapa async/menunggu Sentiasa Membalas Janji?

DDD
DDDasal
2024-12-19 16:59:08549semak imbas

Why Does async/await Always Return a Promise?

Mengapa async/menunggu Sentiasa Mengembalikan Janji

Apabila bekerja dengan async/menunggu, adalah penting untuk memahami bahawa setiap fungsi async mengembalikan objek Promise . Kata kunci tunggu beroperasi pada Promises, menahan fungsi anda sehingga Promise diselesaikan atau ditolak.

Mengapa console.log() Tidak Berfungsi Terus?

Tidak seperti fungsi segerak , fungsi async tidak segera mengembalikan hasilnya. Sebaliknya, mereka mengembalikan Janji yang, apabila diselesaikan, mengandungi hasilnya. Oleh itu, console.logging hasil daripada fungsi async secara langsung hanya akan mencetak Promise, bukan nilainya.

Menggunakan then() untuk Unwrap the Promise

Untuk mengakses hasil daripada fungsi async, anda mesti sama ada menggunakan kaedah await atau .then(). Kaedah .then() menerima panggilan balik yang mengambil nilai yang diselesaikan sebagai hujah. Dalam kod contoh, kaedah .then() digunakan untuk mencetak objek json.

Why Not Console.log(getJSON())?

Dalam coretan kod yang anda berikan, console.log(getJSON()) akan mengembalikan Janji. Ini kerana penantian tidak merungkai Janji untuk anda. Ia hanya membuatkan fungsi anda menunggu untuk Janji diselesaikan. Anda masih perlu membuka Promise secara manual menggunakan sama ada await atau .then().

Kesimpulan

Untuk menggunakan async/tunggu dengan berkesan, ingat bahawa fungsi async sentiasa mengembalikan Promises . Oleh itu, untuk mengakses hasil fungsi async, anda mesti sama ada menggunakan await atau panggil kaedah .then() pada Promise yang dikembalikan.

Atas ialah kandungan terperinci Mengapa async/menunggu Sentiasa Membalas Janji?. 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