Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Susan Sarandon
Lepaskan: 2024-11-29 04:48:17
asal
566 orang telah melayarinya

Why Do Async/Await Functions Always Return a Promise?

Mengapa async/menunggu Sentiasa Membalas Janji?

Menggunakan fungsi async/menunggu boleh membingungkan pada mulanya, terutamanya apabila ia berkaitan dengan mengendalikan janji yang dikembalikan oleh fungsi async. Mari kita mendalami tingkah laku yang diserlahkan dalam kod yang disediakan:

<br>const getJSON = async () => {<br> permintaan const = () => Janji baharu((selesaikan, tolak) => (</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)
Salin selepas log masuk

));

const json = tunggu permintaan();
kembalikan json;
}

Apabila melaksanakan getJSON(), fungsi mengembalikan Janji objek. Ini berlaku kerana setiap fungsi async mengembalikan Janji di bawah hud. Kata kunci await beroperasi pada Promise ini, menggantung pelaksanaan fungsi sehingga Promise menyelesaikan atau menolak.

Dalam contoh, tunggu menunggu permintaan() untuk diselesaikan. Walau bagaimanapun, ia tidak secara automatik membuka bungkus Janji. Anda perlu mengendalikan Promise yang dikembalikan secara eksplisit sama ada menggunakan await atau .then().

Menggunakan .then(), seperti yang dilihat dalam kod yang disediakan:

<br>getJSON ().then(json => console.log(json)); // prints { foo: 'bar' }<br>

memanggil fungsi panggil balik apabila Promise menyelesaikan dan menyerahkan hasilnya sebagai parameter json. Pendekatan ini membenarkan akses kepada nilai yang diselesaikan dalam panggilan balik.

Sebaliknya, log terus hasil daripada fungsi async menggunakan console.log(getJSON()) mengembalikan objek Promise kerana ia tidak membuka balutan Janji. Model Promise memastikan bahawa anda hanya boleh mengakses hasil Promise dari dalam Promise itu sendiri atau dengan menggunakan kaedah buka bungkus yang jelas seperti .then().

Atas ialah kandungan terperinci Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan