Kod asynchroniczny to kod, który nie blokuje dalszego wykonywania programu podczas oczekiwania na wynik operacji. W JavaScript jest to szczególnie ważne, ponieważ język ten często działa w środowisku przeglądarki, gdzie aplikacja musi jednocześnie reagować na użytkownika i wykonywać operacje w tle.
Przykłady operacji asynchronicznych
Do typowych operacji asynchronicznych należą:
- pobieranie danych z serwera za pomocą
fetch, - obsługa timerów, np.
setTimeout, - odczyt plików,
- komunikacja z bazą danych,
- obsługa zdarzeń użytkownika.
Kod synchroniczny a asynchroniczny
Kod synchroniczny wykonuje się linia po linii. Jeśli jedna operacja trwa długo, kolejne instrukcje muszą czekać.
Kod asynchroniczny pozwala rozpocząć operację i kontynuować wykonywanie programu, a wynik obsłużyć dopiero wtedy, gdy będzie gotowy.
Przykład
console.log("Start");
setTimeout(() => {
console.log("Wykonano po 2 sekundach");
}, 2000);
console.log("Koniec");
Wynik będzie następujący:
Start
Koniec
Wykonano po 2 sekundach
Pokazuje to, że setTimeout nie zatrzymał dalszego wykonywania programu.
Mechanizmy obsługi asynchroniczności
W JavaScript do pracy z kodem asynchronicznym używa się głównie:
- funkcji zwrotnych, czyli callbacków,
- obiektów
Promise, - składni
async/await.
Na egzaminie warto kojarzyć, że Promises oraz async/await służą do zarządzania operacjami asynchronicznymi, np. pobieraniem danych z serwera.