⊗jsSpPrmSS 174 of 294 menu

JavaScript-da Sinxron Uslubda Promiselar

Promise hell muammosini hal qilish uchun alohida promis sintaksisi ixtiro qilindi, bu asinxron kodni ancha oson - sinxron uslubda yozish imkonini beradi.

Keling, uni o'rganishni boshlaymiz. Boshlash uchun oldingi darsdan kodni olaylik:

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

Agar bizning getSmth funksiyamiz sinxron bo'lsa, func funksiyasining kodini quyidagicha qayta yozishimiz mumkin edi:

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

getSmth funksiyasi, biroq, asinxron, shuning uchun yuqoridagi kod ishlamaydi. Ammo, promiselarning sinxron uslubidan foydalanib, biz shunga o'xshash narsani olamiz. Buni qilaylik.

Boshlash uchun biz o'zimizning funksiyamizni func maxsus async buyrug'i yordamida asinxron deb e'lon qilishimiz kerak:

async function func() { }

Shundan so'ng, biz func funksiyasi ichida maxsus await buyrug'idan foydalanishimiz mumkin. Promise oldiga yozilgan ushbu buyruq JavaScript-ning promise bajarilgunicha kutishiga sabab bo'ladi. Shundan so'ng buyruq promisening natijasini qaytaradi, va kod bajarilishi davom etadi.

Bizning holatda, biz getSmth chaqiruvi oldidan await yozishimiz kerak. Chunki ushbu funksiyani chaqirish natijasi promise bo'ladi, shuning uchun kodning keyingi bajarilishi faqat ushbu promise bajarilgandan keyin davom etadi. Xo'sh, promisening natijasini o'zgaruvchiga yozish mumkin. Keling, tavsiflanganlarni bajaramiz:

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

Keling, getSmth ni bir necha marta chaqiraylik:

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

Endi getSmth ni tsiklda chaqiramiz:

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

Quyidagi kodni sinxron sintaksis orqali qayta yozing:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish