promise-series-node

0.0.1 • Public • Published

Promise Series

Execute array of methods that return promises, in series.

Installation

$ npm install promise-series

Basic Usage

var promiseSeries = require('promise-series');
 
var func1 = function() {
  return new Promise(function(resolve, reject) {
    resolve('hello');
  });
};
 
var func2 = function() {
  return new Promise(function(resolve, reject) {
    resolve('world');
  });
};
 
promiseSeries([func1, func2]).then( (results) => {
  console.log(results);
});

This will print:

['hello', 'world']  //results are returned in the order they were executed

Halt condition

Optionally, you make choose to provide a callback that is run against each result. If the test fails, the subsequent functions in the series will not be executed, and the series will resolve immediately.

var func1 = function() {
  return new Promise(function(resolve, reject) {
    resolve(true);
  });
};
 
var func2 = function() {
  return new Promise(function(resolve, reject) {
    resolve(false);
  });
};
 
var func3 = function() {
  return new Promise(function(resolve, reject) {
    resolve(true);
  });
};
 
promiseSeries([func1, func2, func3], function(res) {
  return res === true; //only promises that resolve(true) pass the test
}).then( (data) => {
  console.log(results);
});

This will print:

//note that func3 is not included, because func2 failed before it ran
//also note that results include the failed result
[true, false] 

Non-standard inputs

If a function does not return a promise, the return value will be passed through to the results:

var nonPromiseFunc = function() {
  return 'cruel';
};
 
promiseSeries([func1, nonPromiseFunc, func2]).then( (data) => {
  console.log(results);
});

This will print:

['hello', 'cruel', 'world']

If one of the inputs is not a function, the input will be passed through to the results:

promiseSeries([func1, 'foo', 42, func2]).then( (data) => {
  console.log(results);
});

This will print:

['hello', 'foo', 42, 'world']

Readme

Keywords

Package Sidebar

Install

npm i promise-series-node

Weekly Downloads

61

Version

0.0.1

License

none

Last publish

Collaborators

  • cachecontrol