Why Settimeout(function, 0) Is Executed After Next Operation, But Not In The Moment Of Calling?
Solution 1:
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)
- Callback Functions, if any.
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.
Solution 2:
When you use setTimeout()
or one of its friends, its function is placed on a queue to be executed after all the current code has finished.
It should be noted that the spec says the minimum time is clamped to 4
.
Solution 3:
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
Post a Comment for "Why Settimeout(function, 0) Is Executed After Next Operation, But Not In The Moment Of Calling?"