Přejít na hlavní obsah

Vytvoření hotové promise: jednoduchý Hyde

  • Radim Nováková
  • Tipy

Promise - je to design v JavaScriptu, který vám umožňuje vytvořit asynchronní kód, který operuje s výsledky zpracování dat. Je to výkonný nástroj, který vám umožňuje zpracovávat asynchronní události a spravovat tok provádění kódu. Ve standardní situaci, Promise provádí operace asynchronně, ale někdy je potřeba vytvořit již provedený Promise s určitou hodnotou.

Již provedený Promise jedná se o objekt, který je v dokončeném stavu (resolved nebo rejected) s předem definovaným výsledkem. To může být užitečné, když je třeba přenést výsledky asynchronních operací do jiných částí aplikace, aniž byste museli pokaždé provádět asynchronní hovor.

Vytvoření již provedeného Promise je poměrně jednoduché. K tomu se používá statická metoda Promise.resolve() pro vytvoření Promise, ve stavu resolved. Tato metoda bere jako argument hodnotu, která bude použita jako výsledek Promise. Výsledek provedeného Promise lze tedy získat bez nutnosti použití asynchronních hovorů nebo zabalení hodnot v Promise.

Co je promise?

Promise je vytvořen pomocí konstruktoru Promise a přebírá funkci Kolbek, která obsahuje dva argumenty: resolve a reject. Resolve je vyvoláno, když je asynchronní operace úspěšná, a reject, když došlo k chybě.

Jednou z hlavních výhod Promis je možnost řetězení (chaining) asynchronních operací. Díky tomu zůstává kód konzistentní a srozumitelný.

Promise má řadu metod pro práci s daty, jako je then, catch, finally. S jejich pomocí je možné zpracovat výsledek plnění promise a následné chyby.

Promise umožňuje vytvářet čitelnější a srozumitelnější asynchronní kód, díky čemuž je lineárnější a uživatelsky přívětivější.

Proč potřebujete již provedený promise?

Již provedená promise je speciální odrůda promise, která vrací výsledek

hned po svém vzniku. Obvykle se promisy používají ke zpracování asynchronních operací, ale v

v některých případech může být vhodné použít již provedený promise.

Hlavní výhodou již provedeného promise je, že umožňuje synchronně získat

výsledek asynchronní operace. Taková Promis může být užitečná, když není třeba očekávat

dokončení operace a je třeba okamžitě získat výsledek pro další zpracování.

Kromě toho lze již provedený promise použít k pohodlnému řešení výsledku

operace, kdy výraz musí být ve formě promisu, ale skutečné provedení operace není nutné.

To může být užitečné při testování nebo ladění kódu, když je třeba vyměnit skutečnou asynchronní

simulovaná operace s pevným výsledkem.

Krok 1: Vytvořit promise

Projektor Promise (executor) přijímá funkci executor , která má dva parametry: resolve a reject . Funkce executor musí obsahovat asynchronní kód a volat buď resolve , když je operace úspěšně dokončena, nebo reject , když došlo k chybě.

Chcete-li například vytvořit promise, který vrátí náhodné číslo od 1 do 10, můžete použít následující kód:

const myPromise = new Promise((resolve, reject) => 5) else >);

V tomto příkladu, pokud je náhodné číslo větší než 5, je volána funkce resolve s tímto číslem jako argumentem. V případě, že je číslo menší nebo rovno 5, je volána funkce reject s objektem chyby jako argumentem.

Krok 2: Povolit promise

Ve výše uvedeném příkladu, po provedení asynchronní operace funkcí someAsyncFunction, hodnota result přenáší se metodou resolve. Poté promise myPromise bude povolen a jeho hodnota bude rovna hodnotě result.

Upozorňujeme, že metoda resolve může být povolán pouze jednou. Pokud se ho pokusíte zavolat podruhé, způsobí to chybu.

Krok 3: vraťte již provedenou promise

Již provedený Promise lze vytvořit pomocí metody Promise.resolve(). Tato metoda umožňuje zabalit již existující hodnotu, ať už jde o primitivní hodnotu, objekt nebo jinou Promise, do nové Promise.

Chcete-li vytvořit již dokončený Promise, stačí převést hodnotu do metody Promise.resolve(). Vrací tuto metodu nový Promise, který je již proveden s přenesenou hodnotou jako výsledek.

Kód: const value = 42; const promise = Promise.resolve(value); promise.then(result => < console.log(result); // 42 >);
Popis:

Tento přístup k vytvoření již provedeného Promise může být užitečný v případech, kdy je třeba vrátit výsledek asynchronní operace, která již byla provedena v minulosti nebo je v jiné části programu. To usnadňuje práci s Promises a činí kód srozumitelnějším a snadněji čitelným.

Použití již provedené promise

Chcete-li vytvořit již provedený promise, stačí zabalit výsledek provedené operace do návrhu Promise:

const result = 'Результат выполненной операции';const promise = new Promise((resolve) => );promise.then((value) => );

V tomto příkladu je promise generována pomocí konstruktoru Promise a výsledek operace je přenášen do funkce resolve. Poté pomocí metody then můžeme získat hodnotu výsledku a provést další kroky.

Použití již provedené promise je užitečné, když je nutné předat výsledek operace nebo provést řetězec akcí v případě úspěšného provedení operace.