Promise Polyfill Javascript
Promise Polyfill Javascript
?
function PromisePolyFill(executor) {
let onResolve,
onReject,
isFulfilled = false,
isRejected = false,
isCalled = false,
value;
function resolve(val) {
isFulfilled = true;
value = val;
if (typeof onResolve === "function") {
onResolve(value);
isCalled = true;
}
}
function reject(val) {
isRejected = true;
value = val;
if (typeof onReject === "function") {
onReject(value);
isCalled = true;
}
}
this.then = function (callback) {
onResolve = callback;
if (isFulfilled && !isCalled) {
called = true;
onResolve(value);
}
return this;
};
this.catch = function (callback) {
onReject = callback;
if (isRejected && !isCalled) {
called = true;
onResolve(value);
}
return this;
}
try {
executor(resolve, reject);
} catch (err) {
reject(err);
}
}
// Testing the polyfill
const examplePromise = new PromisePolyFill((resolve, reject) => {
setTimeout(() => {
resolve(2);
}, 1000)
});
examplePromise
.then((res)=> {
console.log(res);
})
.catch((err) => {
console.error(err);
})