run-in-sequence
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

runInSequence

Quality Gate Status Security Rating Vulnerabilities Bugs Lines of Code Duplicated Lines (%) Maintainability Rating

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);

Package Sidebar

Install

npm i run-in-sequence

Weekly Downloads

1

Version

1.0.5

License

MIT

Unpacked Size

27 kB

Total Files

12

Last publish

Collaborators

  • tobiaswaelde