promise-series2

1.1.0 • Public • Published

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];
});
 

Readme

Keywords

Package Sidebar

Install

npm i promise-series2

Weekly Downloads

23

Version

1.1.0

License

MIT

Last publish

Collaborators

  • antfx