⊗jsSpPrmSS 174 of 294 menu

Պրոմիսները սինխրոն ոճով JavaScript-ում

Promise hell-ի խնդիրը լուծելու համար ստեղծվել է պրոմիսների հատուկ շարահյուսություն, որն թույլ է տալիս գրել ասինխրոն կոդ շատ ավելի հեշտ՝ սինխրոն ոճով:

Եկեք սկսենք ուսումնասիրել այն: Սկզբից վերցնենք նախորդ դասի կոդը:

function func() { getSmth(2).then(res => { console.log(res); // կարտածի 4 }); } func();

Եթե մեր getSmth ֆունկցիան լիներ սինխրոն, ապա func ֆունկցիայի կոդը մենք կկարողանայինք վերագրել հետևյալ կերպ.

function func() { let res = getSmth(2); console.log(res); // կարտածի 4 }

getSmth ֆունկցիան, սակայն, ասինխրոն է, ուստի վերը նշված կոդը չի աշխատի: Սակայն, օգտագործելով պրոմիսների սինխրոն ոճը, մենք կկարողանանք ստանալ նման մի բան: Եկեք անենք դա:

Սկզբում մենք պետք է հայտարարենք մեր func ֆունկցիան ասինխրոն հատուկ async հրամանի միջոցով.

async function func() { }

Դրանից հետո մենք կկարողանանք func ֆունկցիայի ներսում օգտագործել հատուկ await հրամանը: Այս հրամանը, գրված պրոմիսից առաջ, կստիպի JavaScript-ին սպասել մինչև որ պրոմիսը կատարվի: Դրանից հետո հրամանը կվերադարձնի պրոմիսի արդյունքը, և կոդի կատարումը կշարունակվի:

Մեր դեպքում մենք պետք է գրենք await getSmth-ի կանչից առաջ: Քանի որ այս ֆունկցիայի կանչի արդյունքը պրոմիս է, ապա կոդի հաջորդ կատարումը կշարունակվի միայն այդ պրոմիսի կատարումից հետո: Իսկ պրոմիսի արդյունքը կարելի է գրել փոփոխականի մեջ: Եկեք կատարենք նկարագրվածը.

async function func() { let res = await getSmth(2); console.log(res); // կարտածի 4 } func();

Եկեք կանչենք getSmth մի քանի անգամ.

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // կարտածի 13 } func();

Իսկ հիմա կանչենք getSmth ցիկլում.

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

Վերագրեք հետևյալ կոդը սինխրոն շարահյուսության միջոցով.

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել