Rumah >hujung hadapan web >tutorial js >Polyfills of Promise.all()
Input : Ia memerlukan pelbagai Janji (tidak perlu)
Output: Ia mengembalikan Promise yang mengandungi pelbagai hasil daripada semua janji kejayaan.
Nota: Jika mana-mana janji gagal, janji itu ditolak serta-merta.
`
Promise.myAll = fungsi (janji) {
kembalikan Janji baharu(fungsi (selesaikan, tolak) {
// Semak sama ada input ialah tatasusunan
jika (!Array.isArray(janji)) {
return reject(new TypeError("Argumen mestilah array"));
}
let results = []; let completedPromises = 0; promises.forEach(function (promise, index) { // Use Promise.resolve to handle non-promise values Promise.resolve(promise) .then(function (value) { results[index] = value; completedPromises += 1; // If all promises are resolved if (completedPromises === promises.length) { resolve(results); } }) .catch(function (error) { reject(error); // Reject if any promise fails }); }); // Handle case with empty array of promises if (promises.length === 0) { resolve([]); }
});
};
`
. Semua janji diselesaikan dan keputusannya disimpan dalam tatasusunan keputusan.
. Apabila bilangan janji yang diselesaikan sama dengan panjang tatasusunan input, janji luar diselesaikan dengan tatasusunan hasil.
. Tidak semestinya dalam tatasusunan janji semua nilai mestilah janji, ia boleh melalui sebarang nilai - nombor, rentetan atau sebarang fungsi segerak.
Jika nilai yang diluluskan sudah menjadi janji - Ia akan mengembalikan janji yang sama, memastikan tiada pembungkusan atau perubahan tambahan berlaku.
Jika nilai yang diluluskan bukan janji - Ia akan membungkus nilai dalam janji yang telah diselesaikan, membenarkan untuk menganggapnya seperti janji dan mengendalikannya dengan .then()
supaya ia menyelesaikan dengan nilai, jika kita menggunakan reject ia akan terperangkap dalam blok tangkapan dengan nilai dianggap sebagai ralat.
Jika anda masih mempunyai sebarang soalan, sila tanya dalam komen!
Atas ialah kandungan terperinci Polyfills of Promise.all(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!