async parallel functions
by crackingthefrontendinterview
JavaScript
function asyncFunc1(callback) {
setTimeout(() => {
callback(1);
}, 3000);
}
function asyncFunc2(callback) {
setTimeout(() => {
callback(2);
}, 2000);
}
function asyncFunc3(callback) {
setTimeout(() => {
callback(3);
}, 1000);
}
function asyncParallel(arr, callback) {
let resultCount = 0;
let resultArr = [];
arr.forEach((fn, idx) => {
fn(val => {
resultArr[idx] = val;
resultCount++;
if (resultCount === arr.length) {
callback(resultArr);
}
})
})
}
asyncParallel([asyncFunc1, asyncFunc2, asyncFunc3], result => {
console.log(result); // 1, 2, 3 (prints results of each asynchronous function in order)
});