Rumah >hujung hadapan web >tutorial js >Bagaimana Saya Boleh Menunggu Semua Janji Ditepati, Walaupun Ada yang Gagal?
Menunggu Semua Janji, Tanpa mengira Kegagalan
Dalam senario di mana anda mempunyai beberapa siri janji membuat permintaan rangkaian yang mungkin menemui kegagalan, anda mungkin lebih suka menunggu semua janji diselesaikan sebelum meneruskan, walaupun ada yang gagal.
Terbina dalam Kaedah Promise.allSettled menyediakan penyelesaian yang mudah:
Promise.allSettled([promise]).then(([result]) => { // Reached regardless of outcome // {status: "fulfilled", value: 33} });
Sebelum pengenalan Promise.allSettled, anda boleh menggunakan fungsi reflect untuk mencapai hasil yang sama:
const reflect = (p) => p.then( (v) => ({ v, status: "fulfilled" }), (e) => ({ e, status: "rejected" }) ); reflect(promise).then((v) => { console.log(v.status); });
Sebagai alternatif, melanjutkan fungsi pantulan untuk berfungsi dengan pelbagai janji:
function reflect(promises) { return Promise.all(promises.map((p) => { return p.then((v) => ({ v: v, status: "fulfilled" }), (e) => ({ e: e, status: "rejected" })); })); } reflect(promises).then((results) => { var success = results.filter((x) => x.status === "fulfilled"); });
Oleh menggunakan teknik ini, anda boleh mengendalikan kegagalan rangkaian dengan anggun dan memastikan kod anda terus dilaksanakan seperti yang dimaksudkan, tidak kira sama ada beberapa janji berjaya atau tidak.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menunggu Semua Janji Ditepati, Walaupun Ada yang Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!