let a = []
for (let i=0;i<4;i++){
setTimeout(()=>{
a.push(i);
},2000)
}
console.log(a);
Here I am getting a always blank []. Please suggest a way to stop executing console.log(a) line until a gets filled.
let a = []
for (let i=0;i<4;i++){
setTimeout(()=>{
a.push(i);
},2000)
}
console.log(a);
Here I am getting a always blank []. Please suggest a way to stop executing console.log(a) line until a gets filled.
You should await setTimeout
:
let a = [];
async function test() {
for (let i = 0; i < 4; i++) {
await new Promise((resolve) =>
setTimeout(() => {
a.push(i);
resolve();
}, 2000)
);
}
}
await test();
console.log(a);
Note: You can also use Promise.allSettled
to run them at the same time