Мазмунга өтүү

Node.js кантип иштейт: окуялар цикли жана бөгөттөбөгөн киргизүү-чыгаруу

Сабактын башталышы

Node.js кантип иштейт: окуялар цикли жана бөгөттөбөгөн киргизүү-чыгаруу

Асинхрондуулук, таймерлер жана агымдар эмне үчүн так ушундай иштээрин түшүндүргөн бирдиктүү аткаруу модели

Негизги идея: сиздин JavaScript бир агымда аткарылат. Node тез бойдон калат, себеби кодуңузду параллель иштеткендиктен эмес, ал жалгыз агымга күтүүгө жол бербегендиктен. Ишке операциялык система керек болгондо (файлды окуу, маалымат базасына суроо, сокетке жооп берүү), Node аны сыртка берет, башка кодду аткара берет жана натыйжа даяр болгондо сиздин коллбэкке кайтат. Бул "берип-кайтуу" циклинин координатору -- окуялар цикли.
Сабактын аягында сиз төмөнкүлөрдү жасай аласыз:
  • жалгыз негизги агымда эмне аткарылып, эмне аткарылбасын түшүндүрүү;
  • чакыруу стеги, окуялар цикли жана анын кезектери кантип биргелешип иштээрин байкоо;
  • окуялар циклинин фазаларын жана ар бири эмнени иштетээрин атоо;
  • setTimeout, setImmediate, Promise жана process.nextTick тартибин болжолдоо;
  • бөгөттөгөн кодду таануу жана ал эмне үчүн бүт серверди тоңдуруп салаарын түшүнүү.

Бир агым, бир чакыруу стеги

Node сиздин JavaScript'ти жалгыз чакыруу стеги менен бир агымда аткарат. Чакыруу стеги -- азыр аткарылып жаткан функциялардын тизмеси: функцияны чакырганда ал үстүнө коюлат, кайтканда алынат. Ар бир учурда стектин үстүндөгү функция гана аткарылат.

Стек так бирөө болгондуктан, сиздин JavaScript'тин эки сабы эч качан бир эле учурда аткарылбайт. Кыймылдаткыч (V8) иштин бир бөлүгүн алат, аны аягына чейин аткарат, анан кийинкисин алат. Ошондуктан сиз эч качан башка агым тарабынан жарым-жартылай өзгөртүлгөн өзгөрмөнү көрбөйсүз: JavaScript коду аягына чейин аткарылат. Функцияны ортосунан башка коллбэк үзбөйт; ал башка коллбэк стек кайра бошогонго чейин күтүшү керек.

Бул бир агымдуу модель -- ушул сабактагы бардык нерсенин алдын ала шарты. Бир сүйлөмдү эстеп калсаңыз, ушул болсун: коллбэк чакыруу стеги бош болгондо гана башталат. Окуялар циклинин бүт иши -- ошол бош стекке кийинки кайсы коллбэк жиберилээрин чечүү.

Салыштыруу. Ашканада бир ашпозчуну (агым) элестетиңиз. Ашпозчу бир учурда бир гана иш кыла алат. Бирок акылдуу ашпозчу торт бышып жатканда мешти карап тура бербейт -- ал таймер коет, жашылчаларды туурай баштайт жана таймер зыңгыраганда торткого кайтат. Меш, таймер жана жеткирүүчү -- ашпозчунун сыртындагы жардамчылар. Окуялар цикли -- ашпозчунун кийинки милдетти баштоодон мурун ар дайым "азыр мага эмне даяр?" деп текшерүү адаты.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө