Event Loop (pętla zdarzeń) to kluczowy koncept w JavaScript, który pozwala na obsługę operacji asynchronicznych, takich jak zdarzenia, wywołania zwrotne (callbacks) i obietnice (promises), w języku, który w swej naturze jest jednowątkowy. Dzięki Event Loop, JavaScript może obsługiwać wiele operacji, nie blokując głównego wątku wykonania. Jest to szczególnie ważne w kontekście aplikacji internetowych, gdzie płynność działania i reakcja na interakcje użytkownika są kluczowe.
Jak działa Event Loop
- Pętla zdarzeń sprawdza, czy stos (call stack) jest pusty. Jeśli tak, przenosi zadania z kolejki zdarzeń (event queue) do stosu.
- Kolejka zdarzeń jest obszarem, gdzie JavaScript przechowuje oczekujące zadania, które mają zostać wykonane po opróżnieniu stosu.
- Web APIs to asynchroniczne operacje przeglądarki, takie jak setTimeout, zdarzenia związane z DOM, czy zapytania AJAX, które są wykonywane niezależnie od głównego stosu.
Przykład działania Event Loop
Załóżmy, że chcemy zobaczyć w działaniu asynchroniczność JavaScript i jak Event Loop wpływa na wykonanie kodu. Poniżej znajduje się przykład z prostym kodem HTML i JavaScript, który to ilustruje:
<!DOCTYPE html>
<html>
<head>
    <title>Event Loop w JavaScript</title>
</head>
<body>
    <h3>Test Event Loop</h3>
    <button id="testButton">Kliknij mnie</button>
    
    <script>
        // Dodanie słuchacza zdarzeń do przycisku
        document.getElementById('testButton')
          .addEventListener('click', () => {
            console.log('Kliknięcie przycisku');
            // Asynchroniczne wywołanie setTimeout
            setTimeout(() => {
                console.log('Asynchroniczne zadanie');
            }, 2000);
            console.log('Koniec bloku słuchacza zdarzeń');
        });
    </script>
</body>
</html>
Opis działania kodu
- Po kliknięciu przycisku, wyświetlany jest komunikat “Kliknięcie przycisku”.
- Następnie, pomimo że setTimeoutzostało wywołane, aby wykonać kod po 2 sekundach, natychmiast wyświetlany jest komunikat “Koniec bloku słuchacza zdarzeń”.
- Dopiero po upływie 2 sekund, po opróżnieniu stosu, Event Loop przenosi zadanie związane z setTimeoutna stos i wyświetlany jest komunikat “Asynchroniczne zadanie”.
Podsumowanie
Event Loop w JavaScript jest fundamentem dla asynchronicznych operacji, umożliwiając jednowątkowemu językowi, jakim jest JavaScript, efektywne zarządzanie wieloma zadaniami. Dzięki Event Loop, aplikacje webowe mogą być responsywne i niezawodne, zapewniając płynną interakcję z użytkownikiem. Zrozumienie działania Event Loop jest kluczowe dla każdego programisty JavaScript, ponieważ pozwala na lepsze projektowanie struktury kodu i unikanie potencjalnych problemów związanych z asynchronicznością.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video WebDevelopera w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.
