Promise-ok 23.11.20

Bevezetés

A Promise egy különleges osztály a ES-ben. A célja, hogy tudjunk olyan adatokkal, dolgozni, amelyek nem feltétlenül állnak rendelkezésre azonnal. Ebből kifolyólag egy Promise-nak 3 állapota lehet:

  1. pending: Az adatra még várni kell
  2. fulfilled: Sikerült megszerezni a megfelelő adatot
  3. rejected: Valami hiba történt

A következőképp fog ez nekünk kódban kinézni:

let promise = new Promise((resolve, reject) => {
})

A Promise mindig egy függvényt kér paraméternek amit megadhatünk így nyílfüggvényként, vagy a következőképpen referenciaként is:

let promise = new Promise(func)

function func(resolve, reject) {

}

A lényeg, hogy a függvényünk ezzel a két paraméterrel rendelkezzen.

Innentől a függvényünk törzsében megvalósíthatjük a tetszőleges logikát, ami a resolve és a reject paramétereket fogja felhasználni.

Például kérjünk egy random számot és ha páros, akkor sikerült teljesíteni a Promise-t, ha páratlan akkor nem.

let promise = new Promise(func);

function func(resolve, reject) {
    let random = Math.random();
    if (random % 2 == 0) {
        resolve("Paros");
    } else {
        reject("Paratlan");
    }
}

Most, hogy megvan a Promise-unk, már csak fel kellene tudnunk használni. Az elkészült változónkon fogunk tudni két függvényt h1vni, a then()-t és a catch()-t. Az előbbi akkor fog lefutni, ha sikeresen teljesült a Promise, az utóbbi pedig amikor meghiusult. Nézzük meg a gyakorlatban:

promise.then((uzenet) => "Sikerult a Promise: " + uzenet).catch((uzenet) => "Meghiusult a Promise: " + uzenet);
A fenti példában a nyílfüggvények ugyanúgy sima függvényre cserélhetőek, mint a Promise() esetén.
\pagebreak