Přejít na hlavní obsah

Jak vytvořit již provedený promise

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:

  1. 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ý.
  2. 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.
  3. 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.