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 thenpm install
command:
```bash
$ npm install promise-all-sequential
```
Examples
Comparison withPromise.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);
});
```