Рад са низовима промиса у JavaScript-у
Сада ћемо размотрити две корисне методе,
које омогућавају рад са низовима промиса.
Метода Promise.all омогућава извршење
кода по окончатку свих промиса, прослеђених
јој у виду низа, а метода Promise.race
чека учитавање првог промиса из низа,
одбацујући остале.
Обе методе као резултат враћају нови
промис. За методу Promise.all резултатом
тог промиса биће низ резултата свих
прослеђених промиса (редослед резултата
одговара редоследу промиса у низу),
а за Promise.race - резултат првог
промиса који се извршио.
Хајде да погледамо у пракси. Нека имамо низ промиса:
let promises = [
new Promise(resolve => setTimeout(() => resolve(1), 1000)),
new Promise(resolve => setTimeout(() => resolve(2), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 3000)),
];
Хајде да помоћу Promise.all сачекамо
завршетак учитавања свих промиса из нашег
низа:
Promise.all(promises).then(function(res) {
console.log(res); // исписаће [1, 2, 3] - резултати свих промиса
});
А сада помоћу Promise.race сачекајмо
завршетак учитавања првог од промиса:
Promise.race(promises).then(function(res) {
console.log(res); // исписаће 1 - резултат првог извршеног промиса
});
Ако бар један од промиса у низу буде
одбијен, онда ће промис са резултатом одмах
прећи у стање rejected. Стога
настали изузетак можете ухватити уобичајеним,
већ вама познатим начином, на пример, преко
catch:
Promise.all(promises).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
Направите функцију која враћа промис, унутар
кога је постављено случајно кашњење од
1 до 10 секунди. Нека својим
резултатом промис враћа то кашњење.
Помоћу циклуса и ваше функције попуните
низ 10-ју промиса.
Користећи низ промиса из претходног задатка урадите тако да се у конзолу испише резултат првог промиса који се извршио.
Користећи низ промиса из претходног задатка урадите тако да се у конзолу испише збир резултата свих промиса.