Poznaj zastosowania Event Loop w JavaScript. Przykłady kodu
Ostatnia aktualizacja 15 lutego, 2024
Jedną z fundamentalnych koncepcji, która pozwala językowi JavaScript na efektywne zarządzanie operacjami asynchronicznymi, jest pętla zdarzeń, znana również jako Event Loop. To właśnie dzięki Event Loop, JS może obsługiwać wiele zadań jednocześnie. To niezbędna funkcja we współczesnym środowisku webowym, które charakteryzuje się ciągłą zmiennością i wysokim poziomem skomplikowania. W tym tekście przyjrzymy się bliżej, czym jest Event Loop, jak działa oraz jakie ma praktyczne zastosowania w codziennym programowaniu.
Czym jest Event Loop w JavaScript?
Event Loop jest mechanizmem, który umożliwia JavaScriptowi wykonanie kodu, zbieranie i przetwarzanie zdarzeń oraz wykonanie zaplanowanych wywołań zwrotnych (callbacków). Jest to serce modelu asynchronicznego w JavaScript, które umożliwia wykonywanie skomplikowanych działań, do których można zaliczyć np. pobieranie danych z serwera bez blokowania wątku głównego.
Jak działa Event Loop?
Podstawowym zadaniem Event Loop jest monitorowanie stosu wywołań (call stack) oraz kolejki zdarzeń (callback queue). Gdy stos wywołań jest pusty, Event Loop przenosi zadania z kolejki zdarzeń do stosu wywołań, aby zostały wykonane. Dzięki temu mechanizmowi operacje asynchroniczne, takie jak obsługa zdarzeń czy wywołania AJAX, mogą być realizowane równolegle do innych operacji.
Stos wywołań (call stack)
Call stack to miejsce przechowywania wszystkich funkcji do wykonania. JavaScript wykonuje funkcje od góry do dołu, usuwając je ze stosu po wykonaniu.
Sprawdź także: Praca mechanika
Kolejka zdarzeń (callback queue)
Kolejka zdarzeń to miejsce, gdzie JavaScript przechowuje wywołania zwrotne (callbacki), które mają zostać wykonane po zakończeniu aktualnych operacji.
Pętla zdarzeń w praktyce
console.log('Pierwszy');
setTimeout(function() {
console.log('Drugi');
}, 0);
console.log('Trzeci');
W powyższym przykładzie, mimo że setTimeout
ma opóźnienie ustawione na 0ms, to wiadomość “Drugi” pojawi się na ekranie jako ostatnia. Dzieje się tak, ponieważ wywołanie zwrotne setTimeout
jest przekazywane do kolejki zdarzeń i musi poczekać, aż stos wywołań będzie pusty, zanim zostanie wykonane.
Praktyczne zastosowanie Event Loop
Event Loop ma kluczowe znaczenie w tworzeniu interaktywnych i responsywnych aplikacji webowych. Jak już wspomnieliśmy wyżej, umożliwia on obsługę wielu zadań bez blokowania wątku głównego, co jest szczególnie ważne przy operacjach wejścia/wyjścia. Chodzi tu w szczególności o zapytania do bazy danych, żądania HTTP czy obsługę interfejsu użytkownika.
Przykład z wykorzystaniem Fetch API
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Błąd:', error));
W tym przykładzie używamy Fetch API do asynchronicznego pobrania danych z serwera. Dzięki Event Loop, cały proces odbywa się bez zakłócania działania innych skryptów czy interakcji użytkownika z aplikacją.
Dziękujemy, że przeczytałaś/eś nasz artykuł. Obserwuj EnterTheCode.pl w Wiadomościach Google, aby być na bieżąco.
Czytaj także:
JavaScript – komunikacja z REST API w praktyce
Zarządzanie treścią i stylem strony z użyciem JavaScript i DOM