Javascript bizga juda kerakli imkoniyatlarni taqdim qilgan. Shulardan biri Asinxron JavasCript deb bilaman. Asinxron kodlardan ko’p foydalanamiz. Lekin u aslida qanday ishlaydi? Asinxron kodlarga misol setTimeout, setInterval, Promise, async/await va Http requestlar. Http requestlar by default Javascript tomonidan asinxron qilib yozilgan. Buning sababi ma’lum.
Asinxron kodlar qanday ishlashidan avval biz Event Loop nima ekanligini bilishimiz kerak.
Bizning kodlarimiz Event Loop mexanizmida ishlaydi.
Event loop nima? Queue tasklarni olib, Call Stackka joylashtiradigan mexanizm. Umuman olganda barcha tasklar borib Call Stack da bajariladi va tugatiladi.
Misol uchun:
- Oddiy qatorma qator joylashgan kodlar Call Stack da bajariladi
- Asinxron kodlar Web Api’da bajariladi.
Asinxron kodlar qanday ishlaydi?
Quyidagi kodga e’tibor bering:
console.log(1);
setTimeout(() => {
console.log(2);
}, 1);
console.log(3);
// Natijalar quyidagicha:
// 1;
// 3;
// 2;Nima sababdan console ga 2 dan avval 3 natijasi chiqmoqda? Bizdagi asinxron kodlar dastlab CallStack ga tushadi, callback qismi Web Api’ga boradi va bajariladi. Keyin esa Queue (navbat)ga o’tadi. O’z navbati kelganidan so’ng va CallStack bo’sh bo’lganida u bajariladi va yakunlanadi.
Quyidagi animatsiyada juda yaxshi ko’rsatilib berilgan:
