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)