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
conebo ručně, ačkolivasync/awaitse 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) |