Kivételes helyzetek a JavaScript Promise-jaiban
Most pedig tanuljuk meg, hogyan kezeljük a Promise-on belül előforduló kivételes helyzeteket. Ilyen helyzet esetén el kell utasítanunk a Promise-ot a speciális elutasító függvénnyel, amely automatikusan a Promise függvény második paramétereként érhető el:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
A Promise függvényen belül meg kell hívnunk a
resolve-ot, ha minden normálisan ment, vagy a
reject-et, ha kivételes helyzet
állt elő:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // a Promise adatai
} else {
reject('error in promise'); // a hiba szövege
}
}, 3000);
});
Ezután a then metódus paramétereiként nem egy,
hanem két függvényt kell átadnia: az első akkor fut le,
ha a Promise normálisan teljesült (resolve),
a második pedig - ha hibával (reject):
promise.then(
function(result) {
console.log(result); // kiírja a Promise eredményét
},
function(error) {
console.log(error); // kiírja a hiba szövegét
}
);
Általában a fenti kódot tömörebben írják, így:
promise.then(function(result) {
console.log(result); // kiírja a Promise eredményét
}, function(error) {
console.log(error); // kiírja a hiba szövegét
});
Készítsen aszinkron kódot, amely 0 és 5 között
véletlen számokat generál.
Mindezt tegye egy Promise-ba. A Promise az eredményeként
adja vissza az egyeség és a generált szám hányadosát.
A Promise teljesüljön hibával,
ha nullával való osztás történt, és sikeresen
minden más esetben.