/prottle

Promise.all() throttle

Primary LanguageJavaScript

NPM version Build Status Downloads

Promise.all() throttle - Prottle

  • Executes promise-returning functions in batches;
  • Once batch 1 is finished it's time for the next one;
  • Backend - Node 4.0+ supported;
  • Frontend - works with the env preset using babel. Use a Promise polyfill for IE.

Installation

$ npm install prottle --save

Example - resolved

const prottle = require('prottle');

prottle(2, [
  // batch 1
  () => Promise.resolve(1),
  () => Promise.resolve(2),
  // batch 2
  () => Promise.resolve(3),
  () => new Promise((resolve, reject) => {
    setTimeout(() => resolve(4), 3000);
  }),
  // batch 3
  () => Promise.resolve(5),
])
  .then(res => {
    console.log(res); // [ 1, 2, 3, 4, 5 ]
  });

Example - rejected

const prottle = require('prottle');

prottle(2, [
  () => Promise.resolve('yay'),
  () => Promise.reject('beep boop'),
  () => Promise.resolve('wow')
])
  .catch(err => {
    console.log(err); // beep boop
  });

Works with returned values too!

const prottle = require('prottle');

prottle(2, [
  () => 1,
  () => 2,
  () => 3
])
  .then(res => {
    console.log(res); // [ 1, 2, 3 ]
  });