JSFiddle - React, Tailwind, and code Playground
by evgkch
Babel + JSX
class Promise {
static get RESOLVED() { return 'resolved'; }
static get REJECTED() { return 'rejected'; }
static resolve(res){
return new Promise(resolve => resolve(res), () => {});
}
static reject(err){
return new Promise(() => {}, reject => reject(err));
}
constructor(cb){
this.status = null;
this._queue = [];
const resolve = (res) => {
this.status = Promise.RESOLVED;
const cb = this._queue.splice(0, 1)[0];
const resolved = cb && cb(res);
if (this._queue.length > 0)
{
resolve(resolved);
}
};
function reject(){};
cb(resolve, reject);
}
then(cb){
this._queue.push(cb);
return this;
}
}
let i = 0;
const test = (cb) => setTimeout(cb, 500, i++);
const promise = new Promise(test);
promise
.then(res => {
console.log(res);
return res + 1;
})
.then(res => {
console.log(res);
})