Search code examples
javascriptjqueryangularsettimeout

How to call the setTimeout?


I am being given the below mentioned code and asked to print the console after 3 seconds - B and C after A.

I tried

  setTimeout(main(),3000);

But I get no output.

function sleep(){

}

function main(){

console.log('A');

// call after 3 sec
console.log('B');


// call after 3 sec
console.log('C');

}
}

Solution

  • Above output could also be reproduced using async-await:

    function sleep(time) {
      return new Promise(resolve => {
        setTimeout(() => {
          resolve("");
        }, time);
      });
    }
    
    async function main() {
      await sleep(0);
      console.log('A');
    
      // call after 3 sec
      await sleep(3000);
      console.log('B');
    
      // call after 3 sec
      await sleep(3000);
      console.log('C');
    
    }
    main();