Rumah > Artikel > hujung hadapan web > Bila dan Mengapa Kita Perlu Menggabungkan async/menunggu dengan .then() dalam JavaScript?
Menggabungkan Async/Await dan .then() dengan Promise Conversions
Dalam JavaScript, async/wait ialah mekanisme berkuasa untuk mengendalikan operasi tak segerak . Walau bagaimanapun, terdapat situasi yang mungkin sesuai untuk menggabungkan async/menunggu dengan .then(), terutamanya apabila menukar Promises kepada fungsi async.
Pertimbangkan contoh berikut:
<code class="javascript">async apiCall(params) { var results = await this.anotherCall() .then(results => { //do any results transformations return results; }) .catch(error => { //handle any errors here }); return results; }</code>
Di sini , kaedah anotherCall() mengembalikan Janji, yang ditukar menjadi fungsi tak segerak menggunakan .then().catch(). Ini membolehkan kami melakukan apa-apa transformasi atau pengendalian ralat yang diperlukan sebelum mengembalikan keputusan.
Sesetengah pembangun lebih suka menggunakan async/await dengan .catch() dan bukannya try/catch untuk kekompakannya. Contohnya:
<code class="javascript">async function asyncTask() { throw new Error('network') } async function main() { const result = await asyncTask().catch(error => console.error(error)); console.log('result:', result) } main();</code>
Dalam contoh ini, fungsi asyncTask() melemparkan ralat, yang ditangkap oleh kaedah .catch() dalam panggilan tunggu. Ini menghalang ralat daripada disebarkan dan membolehkan kami mengendalikannya dengan anggun dalam fungsi main().
Perlu ambil perhatian bahawa kaedah .then() mencipta dan mengembalikan Promise baharu, walaupun Promise asal dikembalikan oleh anotherCall() sudah diselesaikan. Tingkah laku ini boleh membawa kepada kesan sampingan yang tidak dijangka, terutamanya jika berbilang Janji dirantai bersama menggunakan .then().
Atas ialah kandungan terperinci Bila dan Mengapa Kita Perlu Menggabungkan async/menunggu dengan .then() dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!