UNPKG

continuify

Version:

Converts an array of functions into continuation-passing style

45 lines (36 loc) 1.24 kB
'use strict'; /** * 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