DEV Community

Ayyubkhon
Ayyubkhon

Posted on

First thoughts about event loop.

Call stack bu js interpreterga script ichidagi functionlarni kuzatib borishni ta'minlaydigan mexanizm. Call stackka qo'shilgan function eng yuqoriga joylashadi, function biror narsani return qilsa yoki scope o'zi tugasa - call stackdan remove qilinadi interpreter tomonidan, oxirgi kirgan function birinchi bo'lib chiqib ketadi, ya'ni eng oxirigi kirgan function birinchi execute bo'ladi, bu LIFO prinsip, "last in, first out". barcha funksiyalar amalga oshirilishadi avval anonymous degan funcksiya yaratiladi interpreter tomonidan, hamma funksiya shuning ichida ishga tushiriladi, agar call stackda umuman funksiya qolmasa, anonymous eng oxirida remove bo'ladi call stackdan.

web apilar browserlar bizga beradigan feature hisoblanadi. masalan biz serverga request jo'natsa va response kelmagunicha javascript kodlarimiz execute bo'lmasdan kutadigan bo'lsak, bu bizni dasturimizni rasvo bo'lishiga sabab bo'ladi. web apini o'zida kodlarni execute qilishimiz mumkin, bu esa browserning o'zida amalga oshiriladi.

yana bir foydalaridan biri, web api C kabli low level tillarda yozilgan bo'ladi, bu esa oddiy js bajara olmaydigan ishlarni browserni o'zida bajarishimizga yordam beradi

ular bizga AJAX so'rovlar yuborishimiz, DOMni manipulyatsiya qilishimiz, geo tracking, lcoal storagega kirish kabi ishlarni bajarishimizda yordam beradi.

web apilar yordamida jsdan tashqarida ham ishlar bajarishimiz mumkin, lekin masalan bizni js kodimiz responsega javob berishi kerak bo'lsa, unda nima qilamiz? aynan hus yerda bizga callback yordamga keladi.

callback orqali browser response kelganidan keyin bizi kodimizni ishga tushirishimizga ruxsat beradi.

callback function o'zi nima? callback bu functionga argument  sifatida berilgan another function. u  asosiy kodimiz ishga tushib bo'lganidan keyin ishga tushadi.

cal back funcsiyalar by default asyncronus emas.

settimeoutni vaqti tugasa ham, u birdan ishga tusha olmaydi. sababi call stack bir vaqtning o'zida faqat bitta ish bajaradi. qachonki call stack empty bo'lsa, o'shanda async kodlar ishga tushishni boshlaydi.

call stackdan farqli o'laroq, callback queue FIFO prinsipiga amal qiladi. first in, first out, ya'ni birinchi ishga tushgan function birinchi amalga oshiriladi.

Top comments (0)