run-in-sequence
v1.0.5
Published
A simple function to run async functions in sequence.
Downloads
95
Maintainers
Readme
runInSequence
runInSequence
is a simple util to run a list of asyc functions in sequence.
Installation
NPM
npm install run-in-sequence
Yarn
yarn add run-in-sequence
How to use
For the following examples, given the list of async functions:
// create a list of async functions
const listOfAsyncFunctions = Array.from(new Array(10)).map(
(_, i) => (): Promise<number> =>
new Promise((resolve) => {
setTimeout(() => {
resolve(i);
}, 250);
})
);
Basic usage
const results = await runInSequence(listOfAsyncFunctions);
console.log(`Results:`, results);
Output
Results: [
0, 1, 2, 3, 4,
5, 6, 7, 8, 9
]
With progress
const results = await runInSequence(listOfAsyncFunctions, ({ index, progress, percent }) => {
console.log(`Progress: [${index}] ${progress} - ${percent}%`)
});
console.log(`Results:`, results);
Output
Progress: [1] 0.1 - 10%
Progress: [2] 0.2 - 20%
Progress: [3] 0.3 - 30%
Progress: [4] 0.4 - 40%
Progress: [5] 0.5 - 50%
Progress: [6] 0.6 - 60%
Progress: [7] 0.7 - 70%
Progress: [8] 0.8 - 80%
Progress: [9] 0.9 - 90%
Progress: [10] 1 - 100%
Results: [
0, 1, 2, 3, 4,
5, 6, 7, 8, 9
]
With progress bar
import cliProgress from 'cli-progress';
const progressBar = new cliProgress.SingleBar({});
progressBar.start(listOfAsyncFunctions.length, 0);
const results = await runInSequence(listOfAsyncFunctions, ({ index }) =>
progressBar.update(index)
);
progressBar.stop();
Output
progress [=======================================] 100% | ETA: 0s | 10/10
Results: [
0, 1, 2, 3, 4,
5, 6, 7, 8, 9
]
Delay
You can add a delay between the function calls to prevent e.g. rate limiting in APIs.
// add 1 second delay between each function
const results = await runInSequence(listOfAsyncFunctions, undefined, 1000);