首页 » 技术分享 » setTimeout()延时器

setTimeout()延时器

 

准所周知,setTimeout是延时器,想必让大家写一个延时器也没有任何问题,延时器中的延时设置为0,又会是怎样的效果呢?
我们看一下延时器的写法:

setTimeout(function(){

},1000)

接下来我们看一个例子

for( var i=0;i<6;i++){
    setTimeout(function(){
        console.log("里面输出的结果是:",i);
    },0)
    console.log("外面输出的结果是:",i);
}

童鞋们觉得会输出什么?
结果如下:

外面输出的结果是:0
外面输出的结果是:1
外面输出的结果是:2
外面输出的结果是:3
外面输出的结果是:4
外面输出的结果是:5
里面输出的结果是:6个6

为什么会这样呢?
这里涉及到单线程问题,先执行当前的任务,再执行setTimeout队列。还有一方面就是说setTimeout是一个延时器,必定会后执行。setTimeout(0)和setTimeout(其他的正值)作用类似,但0执行速度会更快。

<script type="text/javascript">
        console.log("111");
        for( var i=0;i<6;i++){
            setTimeout(function(){
                console.log("setTimeout上面",i);
            },100)
            setTimeout(function(){
                console.log("setTimeout下面",i);
            },0)
            console.log("外面的i为:",i); //0 1 2 3 4 5 先执行
        }
        console.log("11");
    </script>

结果为:

111
外面的i为: 0
外面的i为: 1
外面的i为: 2
外面的i为: 3
外面的i为: 4
外面的i为: 5
11
setTimeout下面 6
setTimeout上面 6

转载自原文链接, 如需删除请联系管理员。

原文链接:setTimeout()延时器,转载请注明来源!

0