"Callback" nima ?

"Callback" nima ?

Josh*

Assalaamu alaykum.

Demak birinchi maqolamda yozganimdek asinxron jarayonlarni boshqarish, ushlab olish va hkz amallarni qilishni o'rganishni boshlaymiz.

Bugungi darsimiz "Callback" lar haqida bo'ladi.

Xo'sh, tasavvur qilamiz, biz Http so'rov yuboryapmiz va uning javobi tahminan 1-2 sekundlarda qaytadi. Bu jarayonda kodimizni bloklamasdan turib, 1-2 sekund ichida keladigan javobni ushlab qolish vazifasi topshirilgan bizga. Nima qilamiz ?

Ushbu boshlang'ich kodimiz (http so'rov o'rniga setTimeout ishlatamiz):

let response;
setTimeout( () => {
  response = "Http so'rovimizning javobi!"
},2000);
console.log(response) // undefined


Ko'rib turganimizdek, response ni console ga chiqarsak undefined ko'rsatyapti.

Bunga sabab esa Asinxron ishlayotgan setTimeOut(bu real dasturda Http so'rov) biroz vaqt talab qilyapti va 2 sekunddan keyingina ushbu  response = "Http so'rovimizning javobi!" kodimiz ishlayapti. Bu holatda dasturimiz ishlashda davom etadi va console ga hali qiymat kelib ulgurmagan o'zgaruvchini chiqaradi. Xo'sh, bu asinxron jarayondan kelgan muommoni nima bilan hal qilishimiz mumkin ?

Ya'ni uzoq muddatda keladigan natijalarni qanday yo'l bilan ushlab olishimiz va ustida amallar bajarishimiz mumkin ?

Callback - bu boshqa bir funksiyaga argument sifatida berilgan ikkinchi funksiya.

Ushbu muommoyimizni yechish uchun aynan ushbu callback lar bizga yordamga keladi. Keling kodni biroz takomillashtiramiz:


function getUser(callback){
setTimeout( () => {
  callback("Http so'rovimizning javobi!")
},2000);
}
getUser( (response) => {
// bu yerda response = "Http so'rovimizning javobi!"
  console.log(response);
});

Ushbu kodimiz, 2 sekunddan keyin keladigan natijani konsolga chiqarib berdi. Avalki muommo hal qilindi.

Qanday ishlayapti ?

Demak,

  1. Biz bir funksiya yaratamiz, uning vazifasi uzoq vaqt oladigan kodlarni ishlatish.
  2. Unga argument beramiz va bu argumentni ushbu funksiyada eng oxirgi bizga kerakli natija keladigan joyda funksiya sifatida chaqiramiz va uni argumentiga javobni berib qo'yamiz.
  3. Keyin esa, ushbu katta funksiya chaqirilganda funksiya argumentiga biz xoxlagan funksiyani berib yuboramiz. Bu avaldan yozib qo'yilgan funksiya yoki shu joyda yoziladigan funksiya bo'lishi mumkin. Xuddi tepada biz qilgandek.
  4. Va oxirgi amal bu o'sha berib yuborilgan funksiya ichida kelgan javobni ustida amallarni bajarish.

Ha, sal tushunarsiz, ammo tepada yozgan kodimizga yana bir qarab olib tushunsangiz bo'ladi.

Demak, callbacklar orqali, uzoq muddatda keladigan natijalarni ushlab olish imkoniga ega bo'ldik.

-- Bu eng zo'r chorami ?

-- Yo'q. Bundan yaxshiroq yo'llar ham bor.

Bu haqida keyingi maqolalarimizda gaplashamiz.

Salomat bo'ling :)


Kanalimiz: @JoshDeveloper

Report Page