node-promise-parallel

1.0.0 • Public • Published

node-promise-parallel

Utility to run a batch of Promises in parallel.

Build Status license GitHub issues

Installation

OS X, Windows & Linux

npm install node-promise-parallel --save

Usage example

Use a function* (generator) to queue up promises to be executed in serial. The function* works as a factory yielding the Promises to be executed in parallel.

const PromiseParallel = require('node-promise-parallel');
 
// Example generator function to create Promises to be executed by the queue.
// The generator have to yeild a Promise.
function* promiseGenerator() {
  for(let i = 0; i < 10; i++) {
    yield new Promise(resolve => {
      setTimeout(resolve, (Math.random()*100)+1);
    });
  }
}
 
// Create a PromiseParallel, executing 3 Promises in parallel with a waitTime of 1000ms before staring the next one.
const pq = new PromiseParallel(promiseGenerator, 3, 1000);
 
// Listen on the events emitted from the PromiseParallel.
//  'resolved' - successfully resolved Promise.
//  'rejected' - the Promise was rejected.
//  'completed' - the generator is completed (no new Promises to consume)
 
pq.on('resolved', res => {
  console.log(`Result that was resolved: ${res}`)
}).on('rejected', err => {
  console.log(`Error occured: ${err}`);
}).on('completed', () => {
  console.log('Generator is completed.');
});
 
pq.start(); // Start the execution

For a complete tutorial on how this was created have a look at my blog: https://www.snappyjs.com/2018/03/23/js-how-to-use-generators-and-iterators

Development setup

No dependencies outside of node.

npm install node-promise-parallel --save
npm test
npm sample

Release History

  • 1.0.0
    • RELEASE: Initial release.

Meta

Tommy Dronkers - E-mail: tommy@snappyjs.com Homepage: https://www.snappyjs.com

Distributed under the MIT license. See LICENSE for more information.

https://github.com/snappyjs/node-promise-parallel

Contributing

  1. Fork it (https://github.com/snappyjs/node-promise-parallel/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

Package Sidebar

Install

npm i node-promise-parallel

Homepage

snappyjs.com

Weekly Downloads

27

Version

1.0.0

License

MIT

Unpacked Size

11 kB

Total Files

7

Last publish

Collaborators

  • snappyjs