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)
));
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!