[ITEM 2] QUESTION: Що таке Event Loop?
Event Loop або цикл подій є фундаментальним механізмом у JavaScript, який забезпечує асинхронну поведінку мови, незважаючи на її однопотокову природу. Без цього механізму було б неможливо уявити сучасну веб-розробку, оскільки він координує виконання коду, обробку подій, мережеві запити та відмальовування інтерфейсу.
В основі роботи Event Loop лежить кілька ключових компонентів. Перший із них — це Call Stack або стек викликів, де безпосередньо виконуються функції вашого синхронного коду. Коли інтерпретатор зустрічає функцію, він додає її в стек, а після завершення роботи видаляє. Якщо функція викликає іншу, та поміщається поверх першої.
Другий важливий елемент — це черги завдань. Коли асинхронна операція, така як таймер або запит до сервера, завершується, її результат відправляється в одну з черг. Тут існує поділ на Task Queue, куди потрапляють стандартні колбеки від setTimeout або подій DOM, і Microtask Queue, призначена спеціально для промісів і мутацій DOM.
Сам Event Loop є нескінченним циклом, який постійно перевіряє стан стека викликів. Якщо Call Stack порожній, цикл звертає свою увагу на черги. При цьому діє суворе правило пріоритету: Microtask Queue обробляється завжди раніше, ніж Task Queue. Event Loop переносить усі завдання з черги мірозавдань у стек викликів і виконує їх доти, доки ця черга не спорожніє. Тільки після цього береться одне завдання зі звичайної черги завдань.
Такий підхід гарантує, що ланцюжки промісів та асинхронні операції будуть виконані якнайшвидше, зберігаючи передбачуваний порядок виконання коду та запобігаючи гонкам даних в однопотоковому середовищі виконання.