I am trying to console using a callback function, which itself is a callback function inside a setTimeout function. How can I get an orderly result?
I wish to have callback for f1 called, followed by f2 and finally f3, irrespective of their timer.
let f1 = (cb) => {
setTimeout(() => {
cb(null, {a: 1})
},100)
}
let f2 = (cb) => {
setTimeout(() => {
cb(null, {a: 2})
},50)
}
let f3 = (cb) => {
setTimeout(() => {
cb(null, {a: 3})
},10)
}
function parallelConsole(arr, cb) {
let result = [];
arr.forEach(func => {
func((temp, val) => {
console.log(val)
result.push(val)
if(arr.length === result.length) {
cb(result)
}
})
})
}
parallelConsole([f1, f2, f3], (res) => {
console.log(res) //[{a: 3}, {a: 2}, {a: 1}]
})
Expected Result: [{a: 1}, {a: 2}, {a: 3}]
Actual Result: [{a: 3}, {a: 2}, {a: 1}]