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:
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("数据已获取");
}, 1000);
});
};
fetchData()
.then((data) => console.log(data))
.catch((error) => console.error(error));
Salin selepas log masuk
-
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:
const fetchData = async () => {
try {
const data = await new Promise((resolve, reject) => {
setTimeout(() => {
resolve("数据已获取");
}, 1000);
});
console.log(data);
} catch (error) {
console.error(error);
}
};
fetchData();
Salin selepas log masuk
-
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!