Skip to main content

chainAsync

JS

Chains asynchronous functions.

Loop through an array of functions containing asynchronous events, calling next when each asynchronous event has completed.

note

Use async-await of ES 2015.

const chainAsync = (fns) => {
let curr = 0;
const last = fns[fns.length - 1];
const next = () => {
const fn = fns[curr++];
fn === last ? fn() : fn(next);
};
next();
};
chainAsync([
(next) => {
console.log("0 seconds");
setTimeout(next, 1000);
},
(next) => {
console.log("1 second");
setTimeout(next, 1000);
},
() => {
console.log("2 second");
},
]);