⊗jsSpPrmSS 174 of 294 menu

Ahadi (Promises) Katika Mtindo wa Sawa (Synchronous) katika JavaScript

Kutatua tatizo la ahadi (promise) zilizo ngumu (hell), ulibuniwa sintaksia maalum ya ahadi (promises), inayoruhusu kuandika msimbo usio sawa (asynchronous) kwa urahisi zaidi - kwa mtindo wa sawa (synchronous).

Wacha tuanze kuisoma. Kwanza tuchukue msimbo kutoka somo lilopita:

function func() { getSmth(2).then(res => { console.log(res); // itatoa 4 }); } func();

Ikiwa kitendo chetu getSmth kingekuwa sawa (synchronous), basi msimbo wa kitendo func tunaweza kuuandika upya kama ifuatavyo:

function func() { let res = getSmth(2); console.log(res); // itatoa 4 }

Kitendo getSmth, hata hivyo, ni kisio sawa (asynchronous), kwa hivyo msimbo ulio hapo juu haufanyi kazi. Lakini, kwa kutumia mtindo wa sawa (synchronous) wa ahadi (promises), tunaweza kupata kitu kama hicho. Wacha tufanye hivi.

Kwanza lazima tutangaze kitendo chetu func kuwa kisio sawa (asynchronous) kwa kutumia amri maalum async:

async function func() { }

Baada ya hapo, tutaweza ndani ya kitendo func kutumia amri maalum await. Amri hii, iliyoandikwa kabla ya ahadi (promise), italazimisha JavaScript kusubiri hadi ahadi (promise) itakapokamilika. Baada ya hapo amri itarudisha matokeo ya ahadi (promise), na utekelezaji wa msimbo utaendelea.

Katika kesi yetu, lazima tuandike await kabla ya kuitwa getSmth. Kwa kuwa matokeo ya kiitiko cha kitendo hiki kitakuwa ahadi (promise), basi utekelezaji zaidi wa msimbo utaendelea tu baada ya ahadi (promise) hii kutekelezwa. Na, matokeo ya ahadi (promise) yanaweza kuhifadhiwa kwenye kutofautisha (variable). Wacha tufanye kama ilivyoelezewa:

async function func() { let res = await getSmth(2); console.log(res); // itatoa 4 } func();

Wacha tuite getSmth mara kadhaa:

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

Sasa tuite getSmth kwa kutumia kitanzi (loop):

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

Andika upya msimbo ufuatao kupitia sintaksia ya sawa (synchronous):

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa