Przejdź do głównej zawartości

24. async/await — składnia asynchroniczna ES2017

async/await — synchroniczny styl dla asynchronicznego kodu

async/await to syntaktyczny cukier nad Promise wprowadzony w ES2017. Funkcja async zawsze zwraca Promise. await wewnątrz niej “pauzuje” wykonanie (bez blokowania wątku) i czeka na rozwiązanie Promise. Kod wygląda synchronicznie, działa asynchronicznie.

async/await to standard pisania asynchronicznego kodu w nowoczesnym JavaScript i React. Czytelniejszy niż .then() chaining, łatwiejszy do debugowania.

  1. Wyjaśnić jak async/await jest sugar syntax nad Promise
  2. Opisać obsługę błędów z try/catch/finally
  3. Pokazać sekwencyjne vs równoległe operacje
  4. Omówić typowe pułapki: await w pętli, top-level await
  1. async funkcja — zawsze zwraca Promise, await tylko wewnątrz
  2. await — czeka na Promise, nie blokuje wątku (Event Loop)
  3. try/catch — obsługa rejected Promise jak synchroniczny błąd
  4. Sekwencyjne vs równoległe — await po kolei vs Promise.all([])
  5. Pułapka w pętlifor...of z await vs map z await

Przykład 1

Ewolucja: callback → then/catch → async/await — ten sam kod napisany trzema sposobami.

Przykład 2

Sekwencyjne vs równoległe: await po kolei (400ms total) vs Promise.all (200ms).

Przykład 3

Pułapka: array.map(async fn) nie czeka na wyniki — trzeba Promise.all(array.map(...)).

  1. Wstęp — asynchroniczny JavaScript i Promise
  2. Rozdział 1: async/await podstawy — składnia, relacja z Promise
  3. Rozdział 2: Obsługa błędów — try/catch/finally
  4. Rozdział 3: Wzorce — sekwencyjne, równoległe, pętle
  5. Podsumowanie
  6. Bibliografia

async/await to czytelność asynchronicznego kodu!

Pokaż te same operacje napisane z callback hell, then/catch i async/await. Różnica w czytelności będzie dramatyczna.