1.0.0 • Published 6 years ago

node-promise-parallel v1.0.0

Weekly downloads
Last release
6 years ago


Utility to run a batch of Promises in parallel.

Build Status license GitHub issues


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.


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

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



  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