⊗jsSpPrmSS 174 of 294 menu

JavaScript-də Sinxron Üslubda Promise-lər

Promise hell problemini həll etmək üçün xüsusi promise sintaksisi işlənib hazırlanmışdır, hansı ki, asinxron kodu daha asan - sinxron üslubda yazmağa imkan verir.

Gəlin onun öyrənilməsinə başlayaq. Əvvəlcə əvvəlki dərsdən kodu götürək:

function func() { getSmth(2).then(res => { console.log(res); // 4 çap edəcək }); } func();

Əgər bizim getSmth funksiyamız sinxron olsaydı, onda func funksiyasının kodunu aşağıdakı kimi yenidən yaza bilərdik:

function func() { let res = getSmth(2); console.log(res); // 4 çap edəcək }

getSmth funksiyası, lakin, asinxrondur, ona görə də yuxarıda göstərilən kod işləməyəcək. Amma, promise-lərin sinxron üslubundan istifadə edərək, biz buna bənzər bir şey əldə edə bilərik. Gəlin bunu edək.

Əvvəlcə biz öz funksiyamızı func xüsusi async komandası ilə asinxron elan etməliyik:

async function func() { }

Bundan sonra biz func funksiyasının daxilində xüsusi await komandasından istifadə edə biləcəyik. Bu komanda, promise-dən əvvəl yazıldıqda, JavaScript-i promise yerinə yetirilənə qədər gözləməyə məcbur edəcək. Bundan sonra komanda promise-in nəticəsini qaytaracaq, və kodun icrası davam edəcək.

Bizim vəziyyətimizdə await yazmalıyıq getSmth çağırışından əvvəl. Çünki bu funksiyanın çağırışının nəticəsi promise olacaq, onda kodun sonrakı icrası yalnız bu promise yerinə yetirildikdən sonra davam edəcək. Yaxşı, promise-in nəticəsini dəyişənə yazmaq olar. Gəlin təsvir ediləni edək:

async function func() { let res = await getSmth(2); console.log(res); // 4 çap edəcək } func();

Gəlin getSmth-i bir neçə dəfə çağıraq:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // 13 çap edəcək } func();

İndi isə getSmth-i dövr içərisində çağıraq:

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

Aşağıdakı kodu sinxron sintaksis vasitəsilə yenidən yazın:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et