Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Menangani Kegagalan Rangkaian Dengan Anggun Apabila Menggunakan Janji dalam JavaScript?

Bagaimanakah Saya Boleh Menangani Kegagalan Rangkaian Dengan Anggun Apabila Menggunakan Janji dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-12-15 17:21:16
asal
636 orang telah melayarinya

How Can I Gracefully Handle Network Failures When Using Promises in 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" }));
Salin selepas log masuk

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);
Salin selepas log masuk

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");
});
Salin selepas log masuk

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
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan