Sobes.tech
Middle

Proč byla zavedena konstrukce async/await a jak zlepšuje práci s asynchronním kódem?

sobes.tech AI

Odpověď od AI

Async/await byl zaveden, aby zjednodušil psaní asynchronního kódu, učinil ho čitelnějším a lépe udržovatelným ve srovnání s tradičními callbacky nebo promises.

Jak to zlepšuje:

  1. Čitelnost: Kód s async/await vypadá jako synchronní, řádek po řádku, což výrazně usnadňuje jeho pochopení.
  2. Zpracování chyb: Umožňuje používat standardní konstrukce jako try/catch pro zpracování chyb v asynchronním kódu, na rozdíl od .catch() u promises.
  3. Ladění: Body přerušení (breakpoints) fungují stejně jako ve synchronním kódu, což usnadňuje ladění.
  4. Méně "callback hell": Odstraňuje problém vnořených callbacků, které vedou k nečitelnému kódu.

Příklad:

Kód s promises:

// Příklad s promises
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Chyba při načítání dat:', error);
  });

Stejný kód s async/await:

// Příklad s async/await
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Chyba při načítání dat:', error);
  }
}

fetchData();

Konstrukce async/await je založena na promises a je syntaktickým cukrem pro jejich práci. Funkce označená jako async vždy vrací promise. Operátor await lze použít pouze uvnitř async funkcí a "čeká" na vyřešení promise, vrací její vyřešenou hodnotu nebo vyvolá výjimku v případě chyby.