Programování v jazyce JavaScript často zahrnuje práci s asynchronními operacemi. Asynchronita umožňuje provádět různé úkoly paralelně a neblokovat hlavní proud provádění. Jedním ze způsobů, jak pracovat s asynchronními úkoly v JavaScriptu, je použití Promis.
Promise je objekt představující hodnotu, která může být k dispozici okamžitě nebo později během provádění asynchronní operace. Může být ve třech stavech: čekající, splněný nebo odmítnutý. Když je promise ve stavu proveden (fulfilled), znamená to, že asynchronní operace byla úspěšně dokončena a výsledek je k dispozici.
Někdy je potřeba vytvořit již provedený promise-Promis, který je okamžitě ve stavu hotovo. To může být užitečné například při modelování dat nebo při testování. Jak vytvořit takový Promise? K tomu lze použít statickou metodu Promise.resolve().
Metoda Promise.resolve () přijímá jeden argument - hodnotu, která bude k dispozici v již provedeném Promise. Pokud je argumentem již existující Promise, vrátí tento Promise beze změny. Výsledkem je provedení Promise.resolve () bude nový Promise ve stavu proveden s přenesenou hodnotou.
Co je promise
Promise umožňuje pohodlné ovládání asynchronních operací a zpracování jejich výsledků. Poskytuje možnost provádět řetězec obslužných rutin, které mohou být přivázány k promisu a volány při jeho úspěšném provedení nebo odchylce.
Výhody použití promise:
- Zlepšení čitelnosti kódu - díky použití řetězů obslužných rutin je možné vyhnout se hluboké přílohě kolbacků, díky čemuž je Kód srozumitelnější a snadno podporovatelný.
- Použití jedné struktury pro všechny asynchronní operace - promise lze použít pro různé typy asynchronních operací, což usnadňuje kód a činí jej konzistentnějším.
- Správa chyb - díky možnosti odmítnout promise je možné kontrolovat a zpracovávat chyby v asynchronním kódu, což pomáhá vyhnout se situaci uzamčení a poškození stavu aplikace.
Vytvoření již provedené promise může být užitečné v některých případech, například když je třeba zajistit synchronní chování nebo nahradit výsledek asynchronní operace falešnou hodnotou.
Definice a aplikace
Promis (promise) je mechanismus v JavaScriptu, který umožňuje práci s asynchronními operacemi, jako je stahování dat ze sítě nebo provádění složitých výpočtů. Umožňují spravovat tok provádění kódu zpracováním úspěšného provedení nebo chyby.
Promise může být ve třech stavech: čekání (pending), splněno (fulfilled) nebo zamítnuto (rejected). Když je Promis v čekacím stavu, provede asynchronní operaci. Při úspěšném provedení přejde Promis do stavu provedeného a vyvolá funkci zpětného volání pro zpracování výsledku. V případě chyby se přepne do stavu zamítnuto a vyvolá funkci zpětného volání pro zpracování chyby.
Vytvoření již provedeného promise může být užitečné, když je požadován okamžitý výsledek, bez čekání na provedení asynchronní operace. K tomu se používá metoda Promise.resolve(value) . Vytvoří nový Promis, který okamžitě přejde do stavu provedeného s danou hodnotou.
Aplikace již provedeného promisu umožňuje zjednodušit kód a ušetřit čas, zejména v případech, kdy je výsledek předem znám nebo již byl stažen dříve a uložen v paměti. Kromě toho lze již provedený Promis použít k vyřešení problému závodů (race conditions) a synchronizace asynchronních operací, kdy jedna operace závisí na výsledku druhé.
Vytvoření promise
K vytvoření promise Se používá návrhář Promise, který jako argument přijímá funkci vykonavatel (executor). Funkce vykonavatel přijímá dva argumenty: funkci resolve a funkci reject. Funkce resolve je vyvolána, když je operace úspěšně dokončena a vrátí výsledek. Funkce reject je vyvolána, když je operace dokončena s chybou a vrátí chybu.
Příklad vytvoření promise:
const myPromise = new Promise ((resolve, reject) = > / / asynchronní operace
setTimeout (() = > resolve ('úspěch!');
>, 2000);
>);
V tomto příkladu se vytvoří Promis myPromise, který provede asynchronní operaci pomocí setTimeout. Po 2 sekundách (2000 MS), Promis spustí funkci resolve, která přenáší hodnotu " úspěch!".
Pro použití promisu a získání jeho výsledku lze použít metody then a catch:
myPromise.then(result => console.log(result);
>).catch(error => console.error(error);
>);
Metoda je povolána po úspěšném provedení promise a přijímá funkci, která bude vyvolána s přenesenou hodnotou resolve. Metoda catch je vyvolána, když dojde k chybě, a přijme funkci, která bude vyvolána s přenesenou hodnotou reject.
Jak provést promise
Chcete-li provést promise, musíte zavolat funkci, která tento objekt vrátí. V případě úspěšného provedení přejde Promis do stavu" hotovo " a vrátí výsledek operace. V případě chyby se Promis přepne do stavu" zamítnuto " a vrátí příslušnou zprávu.
Pokud chcete vytvořit slib, který je okamžitě dokončen, můžete použít metodu Promise.resolve() nebo Promise.reject() . Tyto metody vytvářejí a vracejí již provedené promisy s daty předanými jako argument.
Příklad použití metody Promise.resolve() :
Promise.resolve('Успех!').then(function(value) );
Příklad použití metody Promise.reject() :
Promise.reject(new Error('Ошибка!')).catch(function(error) );
Tedy vytváření a provádění Promis pomocí metod Promise.resolve() a Promise.reject () poskytuje pohodlný způsob práce s asynchronním kódem.