Promise.race() Polyfill
The Promise.race() method returns a promise that fulfills or rejects as soon as one of the promises in an iterable fulfills or rejects, with the value or reason from that promise.
Promise.racePolyfill = (promises) => {
return new Promise((resolve, reject) => {
promises.forEach((promise, promiseIndex) => {
promise.then((val) => resolve(val)).catch((error) => reject(error));
});
});
};
Example
Promise.racePolyfill = (promises) => {
return new Promise((resolve, reject) => {
promises.forEach((promise, promiseIndex) => {
promise.then((val) => resolve(val)).catch((error) => reject(error));
});
});
};
const test1 = new Promise(function (resolve, reject) {
setTimeout(reject, 1000, "one");
});
const test2 = new Promise(function (resolve, reject) {
setTimeout(reject, 500, "two");
});
const test3 = new Promise(function (resolve, reject) {
setTimeout(resolve, 200, "three");
});
Promise.racePolyfill([test1, test2, test3])
.then((value) => {
console.log(value);
})
.catch((err) => {
console.log(err);
});