Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengendalikan Berbilang Janji, Termasuk Yang Ditolak, dalam JavaScript?

Bagaimanakah Saya Boleh Mengendalikan Berbilang Janji, Termasuk Yang Ditolak, dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-12-18 06:07:14
asal
886 orang telah melayarinya

How Can I Handle Multiple Promises, Including Rejected Ones, in JavaScript?

Mengendalikan Janji dengan Resolusi Campuran

Dalam pengaturcaraan tak segerak, menangani set janji boleh menimbulkan cabaran. Pertimbangkan senario di mana anda mempunyai berbilang permintaan rangkaian dan salah satu daripadanya mungkin gagal. Secara lalai, Promise.all() menghentikan proses dengan ralat sebaik sahaja satu janji ditolak. Ini mungkin tidak diingini jika anda ingin menangkap respons daripada semua permintaan.

Pustaka Corak Tanpa Janji

Satu penyelesaian tanpa menggunakan perpustakaan promises melibatkan membungkus setiap janji dengan fungsi "mencerminkan". Fungsi ini mengembalikan janji baharu yang diselesaikan dengan nilai atau ralat daripada janji asal dan termasuk sifat "status" yang menunjukkan kejayaan atau penolakan.

const reflect = p => p.then(v => ({ v, status: "fulfilled" }),
                            e => ({ e, status: "rejected" }));
Salin selepas log masuk

Anda kemudian boleh memetakan setiap janji kepada janji mencerminkan dan memanggil Promise.all() pada tatasusunan yang dipetakan:

var arr = [fetch('index.html'), fetch('http://does-not-exist')]

Promise.all(arr.map(reflect)).then(function (results) {
  var success = results.filter(x => x.status === "fulfilled");
});
Salin selepas log masuk

Pendekatan ini membolehkan anda mengendalikan kedua-dua janji yang berjaya dan ditolak dengan anggun.

Promise.allSettled() Terbina dalam

Perhatikan bahawa penyemak imbas moden dan persekitaran JavaScript kini mempunyai kaedah Promise.allSettled() asli yang menyediakan kefungsian yang serupa. Ia mengembalikan janji yang diselesaikan dengan pelbagai hasil, setiap satu mewakili status dan nilai (jika dipenuhi) janji asal yang sepadan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Berbilang Janji, Termasuk Yang Ditolak, 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