4.5 Extending Promise to Functor
https://github.com/eu81273/jsfiddle-console
by dimitrs_papadimitriou
HTML
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
JavaScript
class Promise1 {
constructor(executor) {
this.executor = executor;
}
then(callback) {
this.executor(v => callback(v))
}
}
Promise1.prototype.bind = function(func) {
var initialPromise = this;
return new Promise1(function(resolve) {
initialPromise.then(result => func(result).then(x => resolve(x)))
});
}
new Promise1(resolve=>resolve(5))
.bind(x=>new Promise1(resolve=>resolve(x+5)))
.then(console.log)