async.mapLimit's functionality available as a standalone npm module.
I often find myself pulling in async for this method alone, so in the spirit of breaking things into smaller pieces here's that method as a single thing you can require.
mapLimit(arr, limit, iterator, callback)
The same as map only no more than "limit" iterators will be simultaneously running at any time.
Note that the items are not processed in batches, so there is no guarantee that the first "limit" iterator functions will complete before any others are started.
- arr - An array to iterate over.
- limit - The maximum number of iterators to run at any time.
- iterator(item, callback) - A function to apply to each item in the array. The iterator is passed a callback(err, transformed) which must be called once it has completed with an error (which can be null) and a transformed item.
- callback(err, results) - A callback which is called after all the iterator functions have finished, or an error has occurred. Results is an array of the transformed items from the original array.
MIT. See LICENSE.md for details.