Javascript code runs only on one thread. setTimeout
schedules a function to run later. So in js when all currently running code finish its execution , event
loop will look for any other event.
So setTimeout( .. 0)
will make code run after the current loop.
console.log("I'm message from outside timeout");
will be first scheduled to executued. As soon as it finish the setTimeout
will be executed
So bottom line setTimeout(myfunction ,0)
will run myfunction 0ms after currently executing function. & in your case the current execution loop is
console.log("I'm message from outside timeout");
If you add another console.log("I'm message from outside timeout1");
so current event loop will first log
I'm message from outside timeout
I'm message from outside timeout1
before starting setTimeout
function.
NOTE setTimeout
has a minimum timeout of 4ms . You can look at this Stackoverflow thread to know more about it
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…