JavaScript callback funksiyalar
JavaScript’da funksiya ham qiymat: uni o’zgaruvchiga berish, massivga solish va boshqa funksiyaga uzatish mumkin. Oxirgisi — callback, va u asinxron kodning poydevori.
Funksiya — qiymat
Qavssiz salom — funksiyaning o’zi; qavs bilan salom() — uni
chaqirish natijasi. Bu farq callback’da hal qiluvchi.
Callback uzatish
bajar funksiyasi o’ziga berilgan funksiyani o’zi chaqiradi. Bu qachon
va necha marta chaqirishni tashqaridagi funksiya hal qilishini anglatadi.
Callback bilan moslashuvchan funksiya
Callback bir funksiyani turli vazifalarga moslaydi:
Bitta qayta funksiyasi — uch xil natija. Aynan shu tamoyil ustiga
massiv metodlari qurilgan.
Asinxron callback — setTimeout
Shu paytgacha kod yuqoridan pastga ketma-ket bajarildi. setTimeout esa
callback’ni keyinroq chaqiradi:
Tartibga e’tibor bering: 2 3 dan oldin chiqdi. setTimeout kodni
to’xtatmaydi — u callback’ni navbatga qo’yadi va keyingi qatorga o’tadi.
Natijani callback orqali qaytarish
Asinxron funksiya natijani return bilan qaytara olmaydi:
undefined chiqdi — malumotOl setTimeout ni ishga tushirib, javob
kelishini kutmasdan tugadi. Yechim: natijani callback’ga uzatish:
Xatoni ham uzatish
An’anaviy yondashuv — callback’ning birinchi argumenti xato:
Callback hell
Bir necha asinxron amal ketma-ket kerak bo’lsa, callback’lar ichma-ich joylashadi:
malumotOl((foydalanuvchi) => {
buyurtmalarOl(foydalanuvchi, (buyurtmalar) => {
tafsilotOl(buyurtmalar[0], (tafsilot) => {
console.log(tafsilot);
});
});
});
Har qadamda chuqurlik oshadi, xato ushlash qiyinlashadi. Bu naqsh callback hell (yoki “halokat piramidasi”) deb ataladi.
Aynan shu muammoni hal qilish uchun Promise yaratilgan — keyingi darsning mavzusi.
Amaliy mashq
- Funksiyani o’zgaruvchiga bering va o’zgaruvchi orqali chaqiring;
- massivdagi har elementga callback qo’llaydigan funksiya yozing;
setTimeoutbilan 2 soniyadan keyin xabar chiqaring;- callback’ga natija uzatadigan asinxron funksiya yozing;
(xato, natija)naqshi bilan yoshni tekshiruvchi funksiya tuzing;setTimeoutni0ms bilan yozib, u baribir oxirida chiqishini ko’ring.
6-qadam JavaScript’ning navbat tizimini ko’rsatadi.
Qisqacha xulosa
- Funksiya — qiymat: uzatish, saqlash va qaytarish mumkin.
- Callback — boshqa funksiyaga uzatiladigan va u chaqiradigan funksiya.
- Qavssiz
f— funksiyaning o’zi,f()— chaqiruv natijasi. setTimeoutcallback’ni navbatga qo’yadi, kodni to’xtatmaydi.- Asinxron natija
returnbilan emas, callback orqali qaytariladi. - Ichma-ich callback’lar callback hell ga olib keladi.
Keyingi darsda Promise — shu muammoning yechimi.