1.1.0 • Published 8 years ago

promise-series2 v1.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

Run promises in series

Iterate over an array in series. Execution will not move onto the next element in the array until after the current element has resolved.

NPM

const series = require("promise-series2");

promise = series(
  callback, // callback to return either a value or promise
  parallelCount, // optional parallel count (defaults to 1)
  array // the array of data to iterate
);

promise.then(results => {
  // all done
})

Examples

const series = require("promise-series2");
const vals = [1,2,3,4];

series((val,ix) => {
  return Promise.resolve(val);
}, vals)
.then(results => {
  results[0] == vals[0];
  results[1] == vals[1];
  results[2] == vals[2];
  results[3] == vals[3];
});

Example using setTimeout

const series = require("promise-series2");
const vals = [1,2,3,4];

series((val,ix) => {
  return new Promise((resolve,reject) => {
    setTimeout(()=> resolve(val),1000);
  });
}, vals)
.then(results => {
  // runs after vals.length*1000 milliseconds
});

Example using request-promise

const series = require("promise-series2");
const rp = require('request-promise');

const vals = [
  "http://www.google.com",
  "http://www.microsoft.com"
];

series(url => return rp(url),vals)
  .then(results => {
    results[0]; // html for google
    results[1]; // html for microsoft
  });

Access to current results set

const series = require("promise-series2");
const vals = [1,2,3,4];

series((val,ix,results) => {

  // access previous results if required
  if (ix)
    results[ix-1] == vals[ix-1]; // true

  return Promise.resolve(val);
},vals)
.then(results => {
  results[0] == vals[0];
  results[1] == vals[1];
  results[2] == vals[2];
  results[3] == vals[3];
});
1.1.0

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago