tiny-each-async

Asynchronous iterator function for parallel processing.

Usage no npm install needed!

<script type="module">
  import tinyEachAsync from 'https://cdn.skypack.dev/tiny-each-async';
</script>

README

tiny-each-async

Asynchronous iterator function similar to (and inspired by) async.each, with support for concurrency limit and item index.

build status

Usage

each(array, [limit], iterator, [callback])

Arguments:

  • array - An array of items to iterate through.
  • [limit] - An (optional) integer for determining how many iterator functions should be run in parallel.
  • iterator(item, [index], callback) - A function to be applied to each item in the array. When it has finished processing the item then the callback function should be called (in case of a failure with the error argument, otherwise none).
  • callback(err) - An optional callback function that gets called when either all iterator functions have finished or one of them has returned an error.

Example

var eachAsync = require('tiny-each-async');
var timeouts = [300, 100, 2000];

eachAsync(['file1', 'file2', 'file3'], function(item, index, next) {
  setTimeout(function() {
    console.log(item, index, timeouts[index]);
    next();
  }, timeouts[index]);
}, function(err) {
  return err ? console.error(err.stack) : console.log('all done');
});

For more examples checkout the /examples folder.

FAQ

  • Why the name?

Other possible names were already taken, and the actual source code is tiny.

  • Why create another async library?

Because doing your own thing is fun.

  • What if my iterator function is sync, but I want it && the callback to be async?

Then you might want to use dezalgo.

License

MIT