Reputation: 503
I run this code in JavaScript:
setTimeout(function(){console.log("1");}, 0);
console.log("2");
But output is:
2
1
Why not vice versa?
Upvotes: 2
Views: 96
Reputation: 168
Simply because the callback function of the setTimeout method is executed later.
setTimeout(..)
Althought you specify 0 the callback function is not immediately executed. See https://stackoverflow.com/a/779785/2391070
console.log("2") // 2
setTimeout calls callback and console.log("1") // 1
Upvotes: 1
Reputation: 167182
The setTimeout()
puts all the code in a queue, and then later based on the time, it executes. So you can see the list of procedures to execute as a line of queue. For the above code, you have:
setTimeout
console.log(2)
console.log(1)
So, first thing that executes is, initialize the timer. Secondly, the console.log
gets executed and you see 2
. An interesting thing to note here is, setTimeout
waits at least for 4 ms
before executing its callback function.
Upvotes: 4