continuify
Version:
Converts an array of functions into continuation-passing style
45 lines (36 loc) • 1.24 kB
JavaScript
/**
* converts an array of functions into a continuation-passing style
* @param {Array} funcList
* @param {Object} data
* @param {Object|null} context
* @param {Function|null} onFinishedCallback
*/
Object.defineProperty(exports, "__esModule", {
value: true
});
var continuify = function continuify() {
var funcList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var onFinishedCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
var idx = 0;
if (funcList.length < 1 && onFinishedCallback) {
onFinishedCallback.call(context, data);
} else if (funcList.length < 1 && !onFinishedCallback) {
return null;
}
var next = function next(value) {
var layer = funcList[idx++];
if (!layer && onFinishedCallback) {
onFinishedCallback.call(context, value);
} else if (!layer && !onFinishedCallback) {
return null;
} else {
layer.call(context, value, next);
}
};
next.call(context, data);
};
exports.default = continuify;
//# sourceMappingURL=continuify.js.map
;