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

Mengapa Fungsi Async/Menunggu Sentiasa Membalas Janji?

Susan Sarandon
Susan Sarandonasal
2024-11-29 04:48:17583semak imbas

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>
<pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)

));

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!

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