Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/asynckit/parallel.js
1126 views
1
var iterate = require('./lib/iterate.js')
2
, initState = require('./lib/state.js')
3
, terminator = require('./lib/terminator.js')
4
;
5
6
// Public API
7
module.exports = parallel;
8
9
/**
10
* Runs iterator over provided array elements in parallel
11
*
12
* @param {array|object} list - array or object (named list) to iterate over
13
* @param {function} iterator - iterator to run
14
* @param {function} callback - invoked when all elements processed
15
* @returns {function} - jobs terminator
16
*/
17
function parallel(list, iterator, callback)
18
{
19
var state = initState(list);
20
21
while (state.index < (state['keyedList'] || list).length)
22
{
23
iterate(list, iterator, state, function(error, result)
24
{
25
if (error)
26
{
27
callback(error, result);
28
return;
29
}
30
31
// looks like it's the last one
32
if (Object.keys(state.jobs).length === 0)
33
{
34
callback(null, state.results);
35
return;
36
}
37
});
38
39
state.index++;
40
}
41
42
return terminator.bind(state, callback);
43
}
44
45