Sobes.tech
Junior

Opowiedz o konstrukcji async/await w JavaScript.

sobes.tech AI

Odpowiedź od AI

async/await — składnik składniowy nad obietnicami, zaprojektowany do prostszego pisania kodu asynchronicznego, który wygląda jak synchroniczny.

Funkcja oznaczona słowem async zawsze zwraca obietnicę. Wewnątrz funkcji async można używać słowa kluczowego await.

Operator await jest używany przed wywołaniem obietnicy. Wstrzymuje on wykonanie funkcji async do czasu, aż obietnica zostanie rozwiązana (resolved) lub odrzucona (rejected). Wynik wykonania obietnicy (sukces lub błąd) jest zwracany przez await.

Jeśli obietnica, przed którą stoi await, zostanie odrzucona, to wywoła to wyjątek, który można przechwycić za pomocą bloku try...catch.

// Przykład użycia async/await
async function fetchData() {
  try {
    // Czekamy na wykonanie operacji asynchronicznej (np. zapytanie do API)
    const response = await fetch('https://api.example.com/data');
    // Parsujemy odpowiedź do JSON
    const data = await response.json();
    // Wyświetlamy otrzymane dane
    console.log(data);
  } catch (error) {
    // Przechwytujemy ewentualny błąd
    console.error('Błąd podczas pobierania danych:', error);
  }
}

// Wywołujemy funkcję async
fetchData();

// Funkcja async zwracająca obietnicę
async function getValue() {
  return 10; // To jest automatycznie opakowane w Promise.resolve(10)
}

getValue().then(value => console.log(value)); // Wyświetli 10

Zalety async/await:

  • Czytelność kodu: Kod asynchroniczny staje się bardziej podobny do synchronicznego
  • Obsługa błędów: Łatwiejsza do użycia z standardowymi blokami try...catch
  • Mniej zagnieżdżeń: Unika "piekła callbacków" lub długich łańcuchów .then().

Należy pamiętać, że await może być używane tylko wewnątrz funkcji async.