continuate
Version:
A wrapper to convert regular functions to continuation-passing style
26 lines (24 loc) • 502 B
JavaScript
/**
* Returns function that provides results of fun in continuation-passing style
* @param fun
* @returns {Function}
*/
function cps(fun) {
/**
* @param {...*} args
* @param {Function} callback
*/
return function () {
var args = Array.prototype.slice.call(arguments);
var callback = args.pop();
var result;
try {
result = fun.apply(this, args);
} catch (err) {
callback(err);
return;
}
callback(null, result);
}
}
module.exports = cps;