⊗jsSpPrmSS 174 of 294 menu

Premtet në stilin sinkron në JavaScript

Për të zgjidhur problemin e promise hell u shpik një sintaksë e veçantë e premtimeve, e cila lejon shkrimin e kodit asinkron shumë më lehtë - në stilin sinkron.

Le të fillojmë ta studiojmë atë. Për fillim le të marrim kodin nga mësimi i mëparshëm:

function func() { getSmth(2).then(res => { console.log(res); // do të shfaqë 4 }); } func();

Nëse funksioni ynë getSmth do të ishte sinkron, atëherë kodin e funksionit func ne do ta rishkruanim si më poshtë:

function func() { let res = getSmth(2); console.log(res); // do të shfaqë 4 }

Funksioni getSmth, megjithatë, është asinkron, prandaj kodi i paraqitur më sipër nuk do të funksionojë. Por, duke përdorur stilin sinkron të premtimeve, ne mund të marrim diçka të ngjashme. Le ta bëjmë këtë.

Për fillim ne duhet të deklarojmë funksionin tonë func si asinkron duke përdorur komandën speciale async:

async function func() { }

Pas kësaj, ne do të mundemi brenda funksionit func të përdorim komandën speciale await. Kjo komandë, e shkruar para një premtimi, do ta detyrojë JavaScript-in të presë derisa premtimi të përmbushet. Pas kësaj, komanda do të kthejë rezultatin e premtimit, dhe ekzekutimi i kodit do të vazhdojë.

Në rastin tonë, ne duhet të shkruajmë await përpara thirrjes së getSmth. Meqenëse rezultati i thirrjes së këtij funksioni do të jetë një premtim, atëherë ekzekutimi i mëtejshëm i kodit do të vazhdojë vetëm pas përmbushjes së atij premtimi. Epo, dhe rezultati i premtimit mund të ruhet në një variabël. Le të bëjmë atë që u përshkrua:

async function func() { let res = await getSmth(2); console.log(res); // do të shfaqë 4 } func();

Le ta thërrasim getSmth disa herë:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // do të shfaqë 13 } func();

E tani le ta thërrasim getSmth në një cikël:

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();

Rishkruani kodin e mëposhtëm përmes sintaksës sinkrone:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo