Sobes.tech
Junior

Jaké způsoby práce s asynchronním kódem znáte?

sobes.tech AI

Odpověď od AI

  • Callback funkce: Předání funkce jako argumentu jiné funkci, která bude volána po dokončení asynchronní operace. Mohou vést k "callback hell".
  • Promisy (Promises): Objekt reprezentující konečné dokončení (nebo selhání) asynchronní operace a její výslednou hodnotu. Poskytují strukturovanější správu asynchronnosti.
    // Příklad použití promise
    fetch('/api/data')
      .then(response => response.json()) // Zpracování úspěšné odpovědi
      .then(data => console.log(data)) // Zpracování získaných dat
      .catch(error => console.error('Chyba při načítání dat:', error)); // Zpracování chyby
    
  • Async/await: Syntaktický cukr nad promisy, umožňující psát asynchronní kód ve stylu více synchronním, což jej činí čitelnějším a jednodušším na ladění.
    // Příklad použití async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Čekání na promise
        if (!response.ok) {
          throw new Error(`HTTP chyba! stav: ${response.status}`);
        }
        const data = await response.json(); // Čekání na promise
        console.log(data);
      } catch (error) {
        console.error('Chyba při načítání dat:', error); // Zpracování chyby
      }
    }
    fetchData();
    
  • Generátory (Generators): Mohou být použity pro práci s asynchronností ve spojení s knihovnou co nebo ručně, ačkoliv async/await se stal běžnějším přístupem.

Porovnání hlavních přístupů:

Metoda Výhody Nevýhody
Callbacks Jednoduché na začátku "Callback hell", složitost při zpracování chyb
Promises Lepší čitelnost, zpracování chyb Mohou být objemné v řetězcích operací
Async/await Vysoká čitelnost, podobnost se synchronním kódem Vyžaduje podporu prostředí (async/await)