var iterate = require('./lib/iterate.js') , initState = require('./lib/state.js') , terminator = require('./lib/terminator.js') ; // Public API module.exports = 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); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
lib | Folder | 0755 |
|
|
LICENSE | File | 1.05 KB | 0644 |
|
README.md | File | 7.46 KB | 0644 |
|
bench.js | File | 1.23 KB | 0644 |
|
index.js | File | 156 B | 0644 |
|
package.json | File | 2.32 KB | 0644 |
|
parallel.js | File | 1017 B | 0644 |
|
serial.js | File | 501 B | 0644 |
|
serialOrdered.js | File | 1.71 KB | 0644 |
|
stream.js | File | 703 B | 0644 |
|