Opoždění a asynchronní procesy často představují výzvu ve vývoji softwaru, zejména pokud jde o práci s callbacky. Zde přicházejí do hry Promises – výkonný koncept, který ti pomůže udržet přehlednost tvého kódu a snížit složitost asynchronních operací.
V tomto tutoriálu se ponoříš do světa Promise. Uvidíš, jak fungují, a jak spolupracují s Fetch-API v JavaScriptu, aby prováděly HTTP dotazy a smysluplně zpracovávaly odpovědi. Pojďme společně prozkoumat výhody a základní koncepty Promise.
Nejdůležitější poznatky
- Promises slouží k řízení asynchronních procesů a poskytují jejich výsledky v přehledné struktuře.
- Fetch-API je moderní metoda pro provádění HTTP dotazů, která nativně podporuje Promises.
- Pomocí metod then() a catch() můžeš pracovat s výsledky a chybami Promise, aniž bys sklouzl do callbackové pekel.
Podrobný návod
Krok 1: Úvod do Fetch-API
Fetch-API nabízí jednoduchý způsob, jak provádět HTTP dotazy. Je dostupná téměř ve všech moderních prohlížečích a používá Promises k vracení odpovědi na dotaz. Začneš voláním funkce fetch().
Zde je příklad, jak můžeš provést jednoduchý GET požadavek na server, abys obdržel HTML data. Jednoduše zadáš URL jako parametr.

Krok 2: Zpracování odpovědi
Jakmile je proces Fetch dokončen, obdržíš odpověď. Tato odpověď je na začátku také Promise, kterou můžeš zpracovat pomocí metody then(). V tomto kroku ukážeš, jak získat první stav a hlavičky odpovědi.
Je důležité si uvědomit, že objekty odpovědi přímo neobsahují odpovědní data, ale pouze základní informace, jako jsou stav a hlavičky.
Krok 3: Přístup k tělu odpovědi
Teď přichází vzrušující část – čtení obsahu těla. Můžeš použít metodu response.text(), abys získal text HTTP odpovědi. Tato metoda ti opět vrací Promise, kterou můžeš také získat pomocí then().
V tomto kroku vysvětlíme, že čtení textu je asynchronní proces, pro který znovu potřebuješ koncept Promise.
Krok 4: Vyhnout se callbackovému peklu
Pokud chceš provádět několik asynchronních operací za sebou (např. Fetch a poté číst text), můžeš vidět, že se nemusíš vždy prohlubovat do vnořených volání, abys zpracoval výsledky. Místo toho můžeš pracovat na stejné úrovni tím, že budeš vracet Promises.
To znamená, že můžeš volat metodu then() uvnitř metody then() předchozího Promise, což udrží tvůj kód přehledný.
Krok 5: Zpracování chyb pomocí catch
Chyby jsou nevyhnutelnou součástí vývoje softwaru. Pomocí metody catch() Promises můžeš reagovat na chyby. Například pokud se dostaneš do situace, kdy požadavek selže nebo dojde k chybě sítě, bude zavolána metoda catch().
Zde ukážeme, jak elegantně zacházet s chybami a učinit je srozumitelnými, abys mohl včas rozpoznat možné problémy.

Krok 6: Vytváření vlastních Promises
V tomto kroku se naučíš, jak si sám vytvořit Promises. K tomu použiješ metodu new Promise(), do které předáš funkci, která určuje asynchronní logiku. Použijeme k tomu funkci setTimeout, abychom simulovali zpoždění a ukázali vrácení hodnoty.
Krok 7: Použití resolve a reject
Uvnitř vytvořeného Promise můžeš volat funkce resolve a reject, abys určil, zda byl Promise úspěšně dokončen, nebo selhal. To ti dává kontrolu nad různými toky tvé aplikace a umožňuje flexibilně řídit její chování.
Krok 8: Řetězení Promises
Nakonec můžeš pochopit, že Promises mají schopnost řetězení. To znamená, že můžeš volat metody then() a catch() za sebou, aby bylo zpracování asynchronních operací ještě snazší a čitelnější.
Vytvářením řetězu Promises udržíš přehled o struktuře svého kódu, bez ohledu na to, jak složitá je logika.
Souhrn - Úvod do JavaScript Promises
Je zřejmé, že Promises jsou nezbytným nástrojem v moderním vývoji JavaScriptu. Podporují čisté a čitelné zpracování asynchronních operací a usnadňují práci s HTTP dotazy, aniž bys byl zatlačen do kouta callbackovými funkcemi.
Často kladené otázky
Co je to Promise?Promise je objekt, který představuje eventualitu asynchronního procesu a vrací jeho výsledek, jakmile je dokončen.
Co je účel Fetch-API?Fetch-API se používá k jednoduchému a efektivnímu provádění HTTP dotazů a při tom využívá Promises.
Jak řeším chyby u Promises?Chyby se zpracovávají pomocí metody catch(), která může následovat po každém Promise.
Mohu si sám vytvořit Promises?Ano, můžeš si vytvořit vlastní Promises pomocí metody new Promise() a používat funkce resolve a reject.
Jsou Promises synchronní nebo asynchronní?Promises jsou asynchronní a umožňují JavaScriptu pokračovat v běhu, zatímco se čeká na výsledek asynchronního procesu.