#pseries
pseries is a JavaScript micro-library for easily executing asynchronous functions in series. You pass in an array of promise-returning functions and it executes them in series then returns a promise.
##Installation
npm install pseries
(if using version 1.x.x, requires --harmony_generators
flag to be set)
##Benefits
- Execute a list of functions in order
- Execute one after the other
- One final response outlet (an array of responses)
- One single outlet for handling errors
- Completely asynchronous and non-blocking
##Example using ES2015
var myFuncs = [
() => new Promise((resolve, reject) => {
someAsyncFunc((err, res) => {
if(err) reject(err);
else resolve(res);
});
}),
() => new Promise((resolve, reject) => {
anotherAsyncFunc((err, res) => {
if(err) reject(err);
else resolve(res);
});
}),
];
pseries(myFuncs).then(
res => {
},
err => {
}
);
##Examples
var myFuncs = [
function() {
return new Promise(function(resolve, reject) {
someAsyncFunc(function(err, res) {
if(err) {
reject(err);
}
resolve(res);
});
});
},
function() {
return new Promise(function(resolve, reject) {
anotherAsyncFunc(function(err, res) {
if(err) {
reject(err);
}
resolve(res);
});
});
}
];
pseries(myFuncs).then(
function(res) {
},
function(err) {
}
);
or
pseries([
function() {
return new Promise(function(resolve, reject) {
someAsyncFunc(function(err, res) {
if(err) {
reject(err);
}
resolve(res);
});
});
},
function() {
return new Promise(function(resolve, reject) {
anotherAsyncFunc(function(err, res) {
if(err) {
reject(err);
}
resolve(res);
});
});
}
]).then(
function(res) {
},
function(err) {
}
);
You can also nest pseries calls.
pseries([
firstFunction,
function() {
return new Promise(function(resolve, reject) {
pseries([
someFunction,
anotherFunction
]).then(
function(res) {
resolve(res);
},
function(err) {
reject(err);
}
);
});
},
thirdFunction
]).then(
function(res) {
},
function(err) {
}
);
This is much cleaner than the following, traditional way of handling asynchronous functions.
var myFunc = function() {
someAsyncFunc(function(err, res) {
if(err) {
} else {
anotherAsyncFunc(function(err, res) {
if(err) {
} else {
aThirdAsyncFunc(function(err, res) {
if(err) {
} else {
...
}
});
}
});
}
});
};
##License
Apache License Version 2.0
Copyright (c) 2016 by Ryan Burgett.