A Promise konstruktora egyetlen függvényt vár paraméterként, amelyet általában “executor” függvénynek neveznek. Az executor függvénynek két paramétere van, amelyek maguk is függvények: resolve és reject.
Resolve
Akkor hívjuk meg, ha az aszinkron művelet sikeresen befejeződött, és át akarjuk adni a végeredményt a Promise-nak. A resolve függvény meghívása a Promise állapotát “pending”-ből “fulfilled”-re változtatja
Reject
Akkor hívjuk meg, ha az aszinkron művelet hibával fejeződött be. A hibát argumentumként adjuk át a reject függvénynek. A reject meghívása a Promise állapotát “pending”-ből “rejected”-re változtatja.
Itt egy egyszerű példa:
const myPromise = new Promise((resolve, reject) => {
// Egy egyszerű aszinkron művelet szimulálása
setTimeout(() => {
const success = Math.random() > 0.5; // 50% esély a sikerre
if (success) {
resolve('Sikeres eredmény'); // Az ígéret teljesült
} else {
reject('Hiba történt'); // Az ígéret elutasítva lett
}
}, 1000);
});
myPromise
.then(result => {
console.log(result); // Ha az ígéret teljesült, ez a callback hívódik meg
})
.catch(error => {
console.error(error); // Ha az ígéret elutasítva lett, ez a callback hívódik meg
});
Ebben a példában az executor függvény egy setTimeout-ot használ az aszinkron művelet szimulálására. Miután az időzített művelet befejeződik, a resolve vagy a reject függvény hívódik meg a művelet sikerességétől függően.