JavaScript Operasi Asynchronous: Janji dan Async/Tunggu Penjelasan Terperinci
Janji dan async/menunggu adalah dua cara untuk JavaScript memproses operasi tak segerak. Artikel ini akan menjelaskan perbezaan, kelebihan dan senario yang berkenaan.
Janji
Definisi: - Objek Janji mewakili penyelesaian akhir (atau kegagalan) dan nilai hasil operasi tak segerak.
tatabahasa:
-
Ciri -ciri Utama:
<code class="language-javascript">const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("数据已获取");
}, 1000);
});
};
fetchData()
.then((data) => console.log(data))
.catch((error) => console.error(error));</code>
-
Gunakan untuk mengendalikan hasil yang berjaya.
Gunakan untuk menangani kesilapan.
anda boleh menggunakan panggilan rantaian pelbagai operasi asynchronous. -
.then()
- Kelebihan:
.catch()
-
.then()
lebih baik daripada panggilan balik neraka (
panggilan rantaian lebih jelas daripada menetapkan panggilan balik ke belakang).
- Gunakan untuk kesilapan yang jelas.
cabaran:
-
.then()
- Apabila banyak janji diproses, panggilan rantai mungkin masih sukar dibaca (dipanggil "janji neraka").
.catch()
Apabila memanggil pelbagai
dalam rantai, rawatan ralat mungkin memerlukan perhatian tambahan.
-
async/menunggu
Definisi: - Async/menunggu berdasarkan gula sintaks Janji, menjadikan kod tak segerak kelihatan lebih seperti kod segerak.
- tatabahasa:
.then()
Ciri -ciri Utama:
- Gunakan kata kunci untuk mengisytiharkan fungsi janji.
Gunakan untuk menggantung pelaksanaan sehingga janji selesai.
- Gunakan untuk menangani kesilapan.
Kelebihan:
<code class="language-javascript">const fetchData = async () => {
try {
const data = await new Promise((resolve, reject) => {
setTimeout(() => {
resolve("数据已获取");
}, 1000);
});
console.log(data);
} catch (error) {
console.error(error);
}
};
fetchData();</code>
-
Pembacaan kod: Berbanding dengan panggilan rantaian
, tatabahasa lebih jelas dan mudah difahami.
Mudah untuk debug: Alat penyahpepijatan membolehkan anda melaksanakan kod async/menunggu satu -langkah seperti kod penyegerakan. -
async
Ia digunakan untuk kesilapan berpusat.
-
await
cabaran: -
try...catch
Ia mesti digunakan dalam fungsi pernyataan . -
Jika ia tidak dikendalikan dalam peredaran atau urutan panggilan tak segerak, ia kadang -kadang boleh membawa kepada halangan.
-
.then()
bila hendak menggunakan -
- Janji:
try...catch
digunakan untuk operasi asynchronous yang mudah pakai. -
Apabila menggunakan perpustakaan atau API yang direka di sekitar janji.
Apabila rantaian memanggil pelbagai operasi yang tidak relevan.
async/menunggu: -
async
- Ia digunakan untuk mempunyai pelbagai aliran kerja kompleks yang bergantung kepada operasi tak segerak.
apabila anda memerlukan kod yang lebih jelas dan mudah.
Apabila debugging adalah penting.
gabungan
boleh digunakan dalam kombinasi dengan async/menunggu dan berjanji untuk mencapai kes penggunaan lanjutan:
Atas ialah kandungan terperinci Perbezaan penggunaan async / await vs promises?. 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