Javascript promise-series function
npm install @cloud-smith/promise-series
npm i @cloud-smith/promise-series
`
With Yarn
`
yarn add @cloud-smith/promise-series
`
Example
`
import { promiseSeries } from '@cloud-smith/promise-series';
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
await promiseSeries(tasks)
.then(console.log);
.catch(console.error)
`
The Dummy Function
For demonstration, we can use a dummy promises that succeeds or fails after a delay, just like a real fetch request.
`
export const dummyTask = ({ delay, shouldFail, state }: {
delay: number;
shouldFail?: Boolean;
state?: any;
}) => new Promise((resolve, reject) => {
setTimeout(() => {
if (state) console.log('Task State: ', state);
if (shouldFail) reject(Task simulated failure);
else resolve(Task Success);
}, delay);
});
`
It's possible to import with
`
import { dummyTask } from '@cloud-smith/promise-series';
`
Usage
$3
`
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
await promiseSeries({ tasks })
.then(console.log)
.catch(console.error);
`
$3
`
const tasks = {
getApples: () => dummyTask({ delay: 500 }),
getOrganges: () => dummyTask({ delay: 500 }),
getGrapes: () => dummyTask({ delay: 500 }),
};
await promiseSeries({ tasks })
.then(console.log)
.catch(console.error);
`
$3
`
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => {
console.log('non-async task testing');
}
];
await promiseSeries({ tasks })
.then(console.log)
.catch(console.error);
`
$3
`
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
const onStateChange = stateUpdate => console;
await promiseSeries({
tasks,
onStateChange,
})
.then(console.log)
.catch(console.error);
`
$3
`
const tasks = [
state => dummyTask({ delay: 500, state }),
state => dummyTask({ delay: 500, state }),
state => dummyTask({ delay: 500, state }),
];
await promiseSeries({ tasks })
.then(console.log)
.catch(console.error);
`
$3
`
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
const rollbacks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
await promiseSeries({ tasks, rollbacks })
.then(console.log)
.catch(console.error);
`
$3
`
const config = {
useLogging: true,
};
const tasks = [
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
() => dummyTask({ delay: 500 }),
];
await promiseSeries({ config, tasks })
.then(console.log)
.catch(console.error);
``