⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць