setTimeout里的函数是何时进入任务队列里的

先看一段代码

        setTimeout(function () {
            console.log('abc')
        }, 1000)
        for (var i = 0; i <= 800000000; i++) {
            if (i == 800000000) {
                console.log(i)
            }
        }

 

若只执行下面的for循环,在i5-4200u CPU下,大约3.4秒会输出800000000。当在上方加入setTimeout时,发现大约3.4秒钟输出800000000后接着立刻输出abc。把setTimeout里的1000改成2000或3000发现也是立马输出。但当改成9000后发现要等6秒左右才输出。这说明setTimeout里的函数在setTimeout执行的时候,就开始计时,计时完成就进入任务队列,当执行栈执行完就开始执行任务队列。

posted @ 2019-01-23 17:05  姜瑞涛  阅读(454)  评论(2编辑  收藏  举报