⊗jsSpPrmAr 170 of 294 menu

Рад са низовима промиса у 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-ју промиса.

Користећи низ промиса из претходног задатка урадите тако да се у конзолу испише резултат првог промиса који се извршио.

Користећи низ промиса из претходног задатка урадите тако да се у конзолу испише збир резултата свих промиса.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј