Why doesn't setTimeout(.., 0) execute immediately?

前端 未结 1 1089
走了就别回头了
走了就别回头了 2020-12-19 08:02
var timeout = setTimeout(function(){
     console.log(\"I\'m message from timeout\");
},0);

console.log(\"I\'m message from outside timeout\");

//1. I\'m message f         


        
相关标签:
1条回答
  • 2020-12-19 08:22

    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

    0 讨论(0)
提交回复
热议问题