Path: blob/master/node_modules/asynckit/parallel.js
3973 views
var iterate = require('./lib/iterate.js')1, initState = require('./lib/state.js')2, terminator = require('./lib/terminator.js')3;45// Public API6module.exports = parallel;78/**9* Runs iterator over provided array elements in parallel10*11* @param {array|object} list - array or object (named list) to iterate over12* @param {function} iterator - iterator to run13* @param {function} callback - invoked when all elements processed14* @returns {function} - jobs terminator15*/16function parallel(list, iterator, callback)17{18var state = initState(list);1920while (state.index < (state['keyedList'] || list).length)21{22iterate(list, iterator, state, function(error, result)23{24if (error)25{26callback(error, result);27return;28}2930// looks like it's the last one31if (Object.keys(state.jobs).length === 0)32{33callback(null, state.results);34return;35}36});3738state.index++;39}4041return terminator.bind(state, callback);42}434445