JSFiddle - React, Tailwind, and code Playground

by samur3

JavaScript

class Deferred {
  constructor() {
    this.state = 'pending';
    this.callbacks = [];
  }

  resolve(value) {
    if (value instanceof Deferred) {
    debugger;
      value.then(() => this.resolve(value.value));
    } else if (this.state === 'pending') {
    debugger;
      this.state = 'resolved';
      this.value = value;
      this.callbacks.forEach(callback => callback(this.value));
    }
  }

  then(cb) {
    var next = new Deferred();

    this.callbacks.push((val) => {
    debugger;
      var v = cb(val);
      next.resolve(v);
    });

    return next;
  }
}

let d = new Deferred();
debugger;
d.then(() => {
debugger;
	console.log("hello world!")
  }
);
debugger;
d.resolve();
debugger;

//var d = new Deferred()
//d.then(() => console.log(1))
//d.then(() => console.log(2))
//d.resolve()