function-lift
Version:
Lifts functions into the given context: promise, list, maybe, etc.
30 lines (22 loc) • 746 B
JavaScript
var lift = require('../index');
function promiseUnit(x) {
return Promise.resolve(x);
}
function bindToPromise(func) {
return function () {
var promisedArgs = Array.prototype.slice.call(arguments, 0);
return Promise.all(promisedArgs).then(function (args) {
return func.apply(undefined, args);
})
};
}
var promisify = lift(promiseUnit, bindToPromise);
var multiply = promisify(function (number, multiplier) {
return number * multiplier;
});
var log = promisify(console.log);
// Here we can treat existing and future values in exactly the same manner
log(multiply(100, 3));
log(multiply(Promise.resolve(200), 4));
log(multiply(300, Promise.resolve(10)));
log(multiply(Promise.resolve(400), Promise.resolve(5)));