Programming TypeScript


JavaScript-ning voqealar tsikli


Download 1.81 Mb.
bet139/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   135   136   137   138   139   140   141   142   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

JavaScript-ning voqealar tsikli


Keling, misol bilan boshlaylik. Biz bir nechta taymerni o'rnatamiz, ulardan biri bir millisekunddan keyin, ikkinchisi esa ikkidan keyin ishlaydi:
setTimeout (() => konsol . info ( 'A' ), 1 ) setTimeout (() => konsol . ma'lumot ( 'B' ), 2 ) konsol . ma'lumot ( 'C' )
Endi konsolga nima kiritiladi? Bu A , B , Cmi ?
Agar siz JavaScript dasturchisi bo'lsangiz, intuitiv ravishda javob yo'qligini bilasiz - haqiqiy ishga tushirish tartibi C , A , keyin B . Agar siz ilgari JavaScript yoki TypeScript bilan ishlamagan bo'lsangiz, bu xatti-harakat sirli va tushunarsiz bo'lib tuyulishi mumkin. Aslida, bu juda oddiy; u faqat uyqu C da bo'lgani kabi bir xil parallellik modeliga amal qilmaydi yoki Java'da boshqa ish zarrachasidagi ishlarni rejalashtirish.
Yuqori darajada JavaScript VM shu kabi parallellikni simulyatsiya qiladi ( 8-1-rasmga qarang ):

  • JavaScript-ning asosiy oqimi XMLHTTPRequest (AJAX so'rovlari uchun), setTimeout (uyqu uchun), readFile (diskdan faylni o'qish uchun) va boshqalar kabi mahalliy asinxron API-larni chaqiradi. Ushbu API'lar JavaScript platformasi tomonidan taqdim etilgan - ularni o'zingiz yarata olmaysiz.37

  • Mahalliy asinxron API-ga qo'ng'iroq qilganingizdan so'ng, boshqaruv asosiy oqimga qaytadi va bajarish API hech qachon chaqirilmagandek davom etadi.

  • Asinxron operatsiya bajarilgandan so'ng, platforma voqea navbatiga vazifa qo'yadi . Har bir ipning o'z navbati mavjud bo'lib, u asinxron operatsiyalar natijalarini asosiy ipga qaytarish uchun ishlatiladi. Vazifa qo'ng'iroq haqida ba'zi meta-ma'lumotlar va asosiy mavzudan qayta qo'ng'iroq qilish funktsiyasiga havolani o'z ichiga oladi.

  • Asosiy ish zarrachasining qo'ng'iroqlar to'plami bo'shatilganda, platforma kutilayotgan vazifalar uchun voqealar navbatini tekshiradi. Agar vazifa kutayotgan bo'lsa, platforma uni boshqaradi; bu funktsiya chaqiruvini ishga tushiradi va boshqaruv o'sha asosiy ip funksiyasiga qaytadi. Ushbu funktsiya chaqiruvi natijasida paydo bo'lgan qo'ng'iroqlar to'plami yana bo'sh bo'lganda, platforma ishga tayyor bo'lgan vazifalar uchun voqea navbatini yana tekshiradi. Ushbu tsikl qo'ng'iroqlar to'plami va hodisalar navbati bo'sh bo'lgunga qadar va barcha asenkron mahalliy API qo'ng'iroqlari tugaguncha takrorlanadi.


8-1-rasm. JavaScript-ning hodisalar tsikli: asinxron API chaqirganingizda nima sodir bo'ladi
setTimeout misolimizga qaytish vaqti keldi . Mana nima sodir bo'ladi:

  1. Biz setTimeout ni chaqiramiz , u biz o'tkazgan qayta qo'ng'iroq va 1- argumentga havola bilan mahalliy vaqt tugashi API'sini chaqiradi .

  2. Biz yana setTimeout ga qo'ng'iroq qilamiz , u biz o'tkazgan ikkinchi qayta qo'ng'iroq va argument 2 ga havola bilan yana mahalliy vaqt tugashi API'sini chaqiradi .

  3. Biz C ni konsolga kiritamiz.

  4. Orqa fonda, kamida bir millisekunddan so'ng, bizning JavaScript platformamiz voqea navbatiga vazifa qo'yadi, bu birinchi setTimeout uchun kutish vaqti o'tganini va endi qayta qo'ng'iroq qilishga tayyorligini ko'rsatadi.

  5. Yana bir millisekunddan so'ng platforma ikkinchi setTimeout qo'ng'irog'i uchun voqea navbatiga ikkinchi vazifani qo'shadi.

  6. Qo'ng'iroqlar to'plami bo'sh bo'lganligi sababli, 3-bosqich bajarilgandan so'ng, platformada biron bir vazifa bor-yo'qligini bilish uchun voqea navbatiga qaraydi. Agar 4 va/yoki 5-bosqichlar bajarilsa, u ba'zi vazifalarni topadi. Har bir vazifa uchun u mos keladigan qayta qo'ng'iroq funktsiyasini chaqiradi.


Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   135   136   137   138   139   140   141   142   ...   206




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling