Middle+
Papaskink apie Event Loop: kas tai yra, kaip veikia?
sobes.tech AI
Atsakymas iš AI
Event Loop — tai mechanizmas JavaScript ir kitose viengubo srauto aplinkose, leidžiantis apdoroti asinchronines operacijas nesustabdant pagrindinio srauto.
Kaip tai veikia:
- Yra iškvietimų krūva (call stack), kurioje yra dedamos funkcijos vykdymui.
- Asinchroninės operacijos (pvz., laikmačiai, tinklo užklausos) po jų užbaigimo siunčia savo callback'us į užduočių eilę (task queue).
- Event Loop nuolat tikrina, ar iškvietimų krūva yra tuščia. Jei taip, paima pirmą užduotį iš eilės ir deda ją į krūvą vykdymui.
Taip, net ir su asinchroninėmis operacijomis, kodas vykdomas nuosekliai, nesustabdant UI ar kitų procesų.
Pavyzdys:
console.log('Start');
setTimeout(() => {
console.log('Timeout');
}, 0);
console.log('End');
Rezultatas bus:
Start
End
Timeout
Kadangi setTimeout callback'as patenka į užduočių eilę ir bus vykdomas po to, kai iškvietimų krūva bus ištuštinta.