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
