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);
	})