⊗jsSpPrmFC 171 of 294 menu

Teljesített promise-ok létrehozása JavaScriptben

Időnként szükség lehet egy már teljesített promise létrehozására. Erre két módszer áll rendelkezésre: a Promise.resolve metódus sikeresen teljesített promise-ot hoz létre, a Promise.reject elutasított promise-ot hoz létre. Paraméterként ezek a metódusok azt kapják, ami a promise eredménye vagy hibája lesz.

Mikor lehet szükségünk egy már teljesített promise-ra? Nézzünk egy példát. Tegyük fel, hogy van egy függvényünk, amely paraméterként egy számot vesz át, aszinkron módon csinál valamit vele, és visszaad egy promise-t az eredménnyel:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

A függvényt a következő módon fogjuk használni:

func(5).then(function(res) { console.log(res); // kiírja 25-t });

Tegyük fel, hogy most úgy döntöttünk, hogy az aszinkron műveletet csak akkor hajtjuk végre, ha a kapott szám nagyobb nullánál. Ellenkező esetben a függvény eredménye nulla legyen:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // nulla eredmény } }

Azonban most az történik, hogy a függvény vagy egy promise-t, vagy egy számot ad vissza. Emiatt már nem alkalmazhatjuk a then metódust a függvény eredményére, mert abban az esetben, ha a függvény számot ad vissza, hibát kapunk:

func(0).then(function(res) { // hiba, a then metódust alkalmazzuk nullára });

A Promise.resolve segít megoldani a problémát:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // promise-t adunk vissza, nem számot } }

Tegyük fel, hogy most úgy döntöttünk, hogy az átadott nullára nullát kell visszaadnunk, a nullánál kisebb számok esetén pedig kivételt dobnunk. Ebben a Promise.reject metódus segít:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // visszaadunk egy elutasított promise-t } }
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás