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()