Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menangani Kegagalan Rangkaian Dengan Anggun Apabila Menggunakan Janji dalam JavaScript?
Mengendalikan Kegagalan Rangkaian dengan Janji Menunggu
Dalam JavaScript, Promise.all() ialah alat yang berkuasa untuk mengurus berbilang operasi tak segerak. Walau bagaimanapun, ia mungkin tidak sesuai apabila anda mahu semua janji dilengkapkan, walaupun ada yang menolak.
Untuk mengendalikan senario ini, anda boleh melaksanakan fungsi "Promise Reflect" tersuai yang menukar janji menjadi objek dengan dipenuhi atau ditolak status:
const reflect = p => p.then(v => ({ v, status: "fulfilled" }), e => ({ e, status: "rejected" }));
Menggunakan fungsi mencerminkan ini, anda boleh memetakan tatasusunan janji asal kepada tatasusunan tercermin janji:
var arr = [ fetch('index.html'), fetch('http://does-not-exist') ] var reflectedPromises = arr.map(reflect);
Akhir sekali, anda boleh menggunakan Promise.all() untuk menunggu semua janji yang dicerminkan selesai:
Promise.all(reflectedPromises).then(results => { var success = results.filter(x => x.status === "fulfilled"); });
Pendekatan ini membolehkan anda mengendalikan kegagalan rangkaian dengan anggun dan meneruskan hanya selepas semua permintaan telah selesai. Anda boleh mengakses nilai dan ralat yang diselesaikan masing-masing daripada tatasusunan kejayaan dan hasil.
Sebagai alternatif, anda kini boleh menggunakan kaedah Promise.allSettled() asli:
Promise.allSettled([promise]).then(([result]) => { console.log(result); // Handles both fulfilled and rejected promises });
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangani Kegagalan Rangkaian Dengan Anggun Apabila Menggunakan Janji dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!