⊗jsSpPrmSS 174 of 294 menu

Promisy v synchrónnom štýle v JavaScript

Pre vyriešenie problému promise hell bol vymyslený špeciálny syntax promisov, ktorý umožňuje písať asynchrónny kód oveľa jednoduchšie - v synchrónnom štýle.

Poďme sa pustíme do jeho štúdia. Na začiatok zoberme kód z predchádzajúcej lekcie:

function func() { getSmth(2).then(res => { console.log(res); // vypíše 4 }); } func();

Ak by naša funkcia getSmth bola synchrónna, tak kód funkcie func by sme mohli prepísať nasledovne:

function func() { let res = getSmth(2); console.log(res); // vypíše 4 }

Funkcia getSmth je však asynchrónna, preto uvedený kód nebude fungovať. Ale, využitím synchrónneho štýlu promisov, môžeme dosiahnuť niečo podobné. Urobme to.

Na začiatok musíme deklarovať našu funkciu func ako asynchrónnu pomocou špeciálneho príkazu async:

async function func() { }

Potom budeme môcť vo vnútri funkcie func používať špeciálny príkaz await. Tento príkaz, napísaný pred promisom, donúti JavaScript čakať až kým promis nebude vykonaný. Potom príkaz vráti výsledok promisu a vykonávanie kódu bude pokračovať.

V našom prípade musíme napísať await pred volanie getSmth. Pretože výsledkom volania tejto funkcie bude promis, tak ďalšie vykonávanie kódu bude pokračovať až po vykonaní tohto promisu. No, a výsledok promisu môžeme zapísať do premennej. Urobme popísané:

async function func() { let res = await getSmth(2); console.log(res); // vypíše 4 } func();

Volajme getSmth niekoľkokrát:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // vypíše 13 } func();

A teraz budeme volať getSmth v cykle:

async function func() { let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let elem of arr) { sum += await getSmth(elem); } console.log(sum); } func();

Prepíšte nasledujúci kód cez synchrónny syntax:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť