Middle
Окуялар циклі (event loop) жөнүндө мага айтып бер.
sobes.tech AI
AIден жооп
Окуялар цикли — JavaScriptте асинхрондуу иштин негизи. Ал коддун аткарылышын, окуяларды иштетүүнү жана тышкы дүйнө менен өз ара аракеттенүүнү көзөмөлдөйт.
Негизги компоненттер:
- Heap (Heap): Объекттерди бөлүштүрүү үчүн эс тутум аймагы.
- Stack (Stack): Функциялардын аткаруу контексттери сакталуучу жер. Функция чакырылганда, ал stackке жайгаштырылат, жана аяктагандан кийин ал алынып салынат.
- Web API: Браузер тарабынан берилген интерфейстер (DOM, AJAX, Timers жана башка). Алар асинхрондуу операцияларды иштетет.
- Callback Queue (Callback кезеги): Окуяларга байланыштуу билдирүүлөрдүн кезеги. Web API бул жерде аяктагандан кийин callbackтерди жайгаштырат.
- Окуялар цикли (Event Loop): Үзгүлтүксүз stack жана callback кезегин көзөмөлдөйт. Эгер stack бош болсо, ал биринчи callbackти алып, аны аткаруу үчүн stackке жайгаштырат.
Процесс:
- Синхрондук код stackте аткарылат.
- Асинхрондуу операциялар (
setTimeout,fetch) Web APIлерге жөнөтүлөт. - Асинхрондуу операция аяктагандан кийин, анын callbackи callback кезегине коюлат.
- Окуялар цикли stack бошотулушун күтөт.
- Stack бош болсо, цикли биринчи callbackти алып, аны stackке жайгаштырат, ал жерде аткарылат.
Мисал менен setTimeout:
console.log('Баштоо');
setTimeout(() => {
console.log('setTimeout ичинде');
}, 0);
console.log('Аяктоо');
Жыйынтык:
Баштоо
Аяктоо
setTimeout ичинде
0 мс убакыт менен тайм-аут болсо да, setTimeout callbackи синхрондук коддон кийин аткарылат, анткени ал кезекке түшүп, stack бошотулушун күтөт.
Node.jsте дагы бир окуялар цикли бар, бирок кезектердин иштөө фазаларында кээ бир айырмачылыктар менен.