await-each

1.1.0 • Public • Published

Await Each

Iterate async functions!

awaitEach(values, async function(item) {
  return await doSomething();
}).then(function(responses) {
  console.log(responses);
});

Will wait until each callback is resolved before iterating to the next.

No dependency on async functions!

Can also be used with just promises:

awaitEach(values, function(item) {
  return Promise.resolve(item);
}).then(function(responses) {
  console.log(responses);
});

Mixin with underscore:

_.mixin({awaitEach});

Install

npm install await-each --save

Why?

How is this any different than:

values.forEach(async function(item) {
  await doSomething();
});

In the code above, each callback will wait for it's own await to resolve before continuing, but that wont stop the next callback from starting.

Consider this code:

values.forEach(async function(item) {
  console.log('A');
  await doSomething();
  console.log('B');
});

Because each iteration does not wait for the previous the output would likely be something like:

A A A B B B

Using awaitEach, each iteration waits for the prev to resolve before starting.

So converting the above code to:

awaitEach(values, async function(item) {
  console.log('A');
  await doSomething();
  console.log('B');
});

Will guarantee the output will be:

A B A B A B

Package Sidebar

Install

npm i await-each

Weekly Downloads

56

Version

1.1.0

License

ISC

Last publish

Collaborators

  • jisaacks