Sobes.tech
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:

  1. Yra iškvietimų krūva (call stack), kurioje yra dedamos funkcijos vykdymui.
  2. Asinchroninės operacijos (pvz., laikmačiai, tinklo užklausos) po jų užbaigimo siunčia savo callback'us į užduočių eilę (task queue).
  3. 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.