CoolFace
Apppublic

opusdev/vector-similarity-api

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes
parallel.js44 linesDownload Raw Back to asynckit
1var iterate    = require('./lib/iterate.js')2  , initState  = require('./lib/state.js')3  , terminator = require('./lib/terminator.js')4  ;5 6// Public API7module.exports = parallel;8 9/**10 * Runs iterator over provided array elements in parallel11 *12 * @param   {array|object} list - array or object (named list) to iterate over13 * @param   {function} iterator - iterator to run14 * @param   {function} callback - invoked when all elements processed15 * @returns {function} - jobs terminator16 */17function 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 one32      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