JavaScriptda massiv promislari bilan ishlash
Hozir biz massiv promislari bilan ishlashga
imkon beradigan ikkita foydali metodni
ko'rib chiqamiz.
Promise.all metodi unga massiv
shaklida uzatilgan barcha promislar
tugagandan so'ng kodni bajarishga imkon beradi,
Promise.race metodi esa massivdagi
birinchi promis yuklanishini kutadi,
qolganlarini esa rad etadi.
Ikkala metoda ham o'z natijasi sifatida yangi
promisni qaytaradi. Promise.all metodi
uchun ushbu promisning natijasi barcha
uzatilgan promislar natijalarining massivi
bo'ladi (natijalar tartibi massivdagi
promislar tartibiga mos keladi),
Promise.race uchun esa - birinchi
ishtirok etgan promisning natijasi.
Keling, amalda ko'ramiz. Faraz qilaylik, bizda promislar massivi mavjud:
let promises = [
new Promise(resolve => setTimeout(() => resolve(1), 1000)),
new Promise(resolve => setTimeout(() => resolve(2), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 3000)),
];
Keling, Promise.all yordamida
massivimizdagi barcha promislarning
yuklanishi tugashini kutaylik:
Promise.all(promises).then(function(res) {
console.log(res); // [1, 2, 3] - barcha promislarning natijalarini chiqaradi
});
Endi esa Promise.race yordamida
birinchi promisning yuklanishi tugashini kutaylik:
Promise.race(promises).then(function(res) {
console.log(res); // 1 - bajarilgan birinchi promisning natijasini chiqaradi
});
Agar massivdagi promislardan bittasi ham
rad etilsa, natija promisi darhol
rejected holatiga o'tadi. Shuning uchun
yuzaga kelgan istisnoni siz allaqachon o'rgangan
oddiy usul bilan ushlab qolishingiz mumkin,
masalan, catch orqali:
Promise.all(promises).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
Ichida 1 dan 10 soniyagacha
tasodifiy kechikish o'rnatilgan promisni
qaytaradigan funktsiya yarating. Promis
o'z natijasi sifatida ushbu kechikishni
qaytarsin. Tsikl va sizning funktsiyangiz
yordamida massivni 10 ta promis
bilan to'ldiring.
Oldingi vazifadagi promislar massividan foydalanib, bajarilgan birinchi promisning natijasi konsolga chiqarilishini ta'minlang.
Oldingi vazifadagi promislar massividan foydalanib, barcha promislar natijalari yig'indisi konsolga chiqarilishini ta'minlang.