UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

59 lines (49 loc) 1.46 kB
import { __require as requireIterate } from './lib/iterate.mjs'; import { __require as requireState } from './lib/state.mjs'; import { __require as requireTerminator } from './lib/terminator.mjs'; var parallel_1; var hasRequiredParallel; function requireParallel () { if (hasRequiredParallel) return parallel_1; hasRequiredParallel = 1; var iterate = requireIterate() , initState = requireState() , terminator = requireTerminator() ; // Public API parallel_1 = parallel; /** * Runs iterator over provided array elements in parallel * * @param {array|object} list - array or object (named list) to iterate over * @param {function} iterator - iterator to run * @param {function} callback - invoked when all elements processed * @returns {function} - jobs terminator */ function parallel(list, iterator, callback) { var state = initState(list); while (state.index < (state['keyedList'] || list).length) { iterate(list, iterator, state, function(error, result) { if (error) { callback(error, result); return; } // looks like it's the last one if (Object.keys(state.jobs).length === 0) { callback(null, state.results); return; } }); state.index++; } return terminator.bind(state, callback); } return parallel_1; } export { requireParallel as __require }; //# sourceMappingURL=parallel.mjs.map