Przejdź do głównej zawartości

25. Event Loop — jak JavaScript obsługuje asynchroniczność

Event Loop — serce asynchronicznego JavaScript

JavaScript jest jednowątkowy — wykonuje jeden kod naraz. Event Loop to mechanizm który pozwala mu obsługiwać asynchroniczne operacje (fetch, setTimeout, eventy) bez blokowania. Kluczowe komponenty: Call Stack, Web APIs, Callback Queue, Microtask Queue.

Zrozumienie Event Loop wyjaśnia dlaczego kod asynchroniczny działa tak jak działa — kolejność wykonania, dlaczego Promise callbacks uruchamiają się przed setTimeout, dlaczego UI nie blokuje się podczas fetch.

  1. Wyjaśnić jednowątkowość JavaScript i co z tego wynika
  2. Opisać komponenty: Call Stack, Web APIs, Callback/Task Queue, Microtask Queue
  3. Pokazać kolejność wykonania: synchroniczny → microtasks → macrotasks
  4. Omówić co się dzieje gdy wywołamy fetch, setTimeout, Promise
  1. Call Stack — LIFO, synchroniczne wykonanie
  2. Web APIs — przeglądarka obsługuje timery, fetch, eventy poza JS
  3. Callback Queue (macrotasks) — setTimeout, setInterval, IO
  4. Microtask Queue — Promise.then, queueMicrotask
  5. Kolejność — Call Stack → Microtasks (wszystkie) → jeden Macrotask

Przykład 1

setTimeout(0) nie wykonuje się natychmiast — dlaczego?

Przykład 2

Promise.resolve().then() vs setTimeout(0) — który wykona się pierwszy?

Przykład 3

Analiza kolejności wykonania 5-liniowego kodu z mix sync/async.

  1. Wstęp — jednowątkowy JS, problem blokowania
  2. Rozdział 1: Komponenty Event Loop
  3. Rozdział 2: Kolejność wykonania — sync → microtasks → macrotasks
  4. Rozdział 3: Przykłady i analiza
  5. Podsumowanie
  6. Bibliografia

Event Loop to wyjaśnienie 'dlaczego'!

To opracowanie wymaga dobrych diagramów. Narysuj schemat Event Loop z Call Stack, Web APIs, Queues — i pokaż krok po kroku jak prosty kod asynchroniczny jest wykonywany.