promise-all-sequential

Evaluate a list of promises, sequentially

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
promise-all-sequential
1.0.04 years ago4 years agoMinified + gzip package size for promise-all-sequential in KB

Readme

promise-all-sequential
!NPM Versionnpm-versionnpm-url !Licenselicense-badgelicense-url Extremely lightweight (270 bytes) library for evaluating promises sequentially with zero external dependencies. ```js const promiseAllSequential = require("promise-all-sequential"); const asyncFunc1 = async () => new Promise((resolve) => {
setTimeout(() => {
console.log("First");
resolve(1);
}, 1000);
}); const asyncFunc2 = async () => new Promise((resolve) => {
setTimeout(() => {
console.log("Second");
resolve(2);
}, 250);
}); // Prints "First", then "Second" and returns results promiseAllSequential(asyncFunc1, asyncFunc2).then((result) => {
console.log(result); // [1, 2]
}); ``` Essentially, asyncFunc1 is guaranteed to finish before asyncFunc2 gets called. The result will be a promise which resolves with an array of results from the functions.

Installation

This is a Node.js module available through the npm registry. Before installing, download and install Node.js. Installation is done using the npm install command: ```bash $ npm install promise-all-sequential ```

Examples

Comparison with Promise.all() that calls functions simultaneously: ```js // Prints "Second", then "First" - wrong order! Promise.all(asyncFunc1(), asyncFunc2()).then((results) => {
console.log(results); // [1, 2] - Correct
}); ``` Comparison with chaining asynchronous functions: ```js // Using async function chaining const arr = ; const results = async1().then((r1) => {
arr.push(r1);
return async2().then((r2) => {
arr.push(r2);
return async3().then((r3) => {
arr.push(r3);
return arr;
});
})
}); console.log(results); // Using this library promiseAllSequential(async1, async2, async3).then((results) => {
console.log(results);
}); ```

Troubleshooting

Please note that you cannot initialize the promise directly, meaning that the following will not work: ```js const asyncFunc = new Promise(...); ``` This is because a promise starts executing its body as soon as it is created, making it no longer possible to force into sequential order. You must wrap the initialization into a function instead: ```js const asyncFunc = () => new Promise(...); ``` If you face any issues, please submit an issue or a pull request.

People

The author of promise-all-sequential is Jonatan Hamberg List of all contributors

License

MIT