zoukankan      html  css  js  c++  java
  • setTimeout、setInterval时间设为0会怎样??

    setTimeout

    话不多说,直接上代码:

    console.log('立即执行1--' + new Date().getMilliseconds());
    setTimeout(function(){
    console.log('延时0ms执行--' + new Date().getMilliseconds());
    },0);
    console.log('立即执行2--' + new Date().getMilliseconds());
    

    我们看一下打印结果:
    image.png

    再看下面这段代码:

    console.log('立即执行1--' + new Date().getMilliseconds());
    
    setTimeout(function(){
    console.log('延时0ms执行--' + new Date().getMilliseconds());
    },0);
    
    console.log('立即执行2--' + new Date().getMilliseconds());
    
    setTimeout(function(){
    console.log('延时1ms执行--' + new Date().getMilliseconds());
    },1);
    
    console.log('立即执行3--' + new Date().getMilliseconds());
    
    setTimeout(function(){
    console.log('延时50ms执行--' + new Date().getMilliseconds());
    },50);
    
    console.log('立即执行4--' + new Date().getMilliseconds());
    

    执行结果:
    image.png

    Javascript是单线程的,执行顺序由上而下,而setTimeout是典型的异步方法,其中的操作会被挂起,直到主队列中的代码执行完成后才开始执行。

    setInterval

    console.log('立即执行1--' + new Date().getMilliseconds());
    var count = 0;
    var testIntval = setInterval(function(){
        console.log('定时器--'+ new Date().getMilliseconds());
        count++;
        if(count == 2){
            clearInterval(testIntval);
        }
    },0);
    
    console.log('立即执行2--' + new Date().getMilliseconds());
    

    打印结果有两种,出现第2种的几率更大:
    image.png
    image.png

    setInterval 和setTimeout比较

    console.log('立即执行--' + new Date().getMilliseconds());
    
    setTimeout(function(){
    console.log('延时0ms执行1--' + new Date().getMilliseconds());
    },0);
    
    var count = 0;
    var testIntval = setInterval(function(){
        console.log('定时器1--'+ new Date().getMilliseconds());
        count++;
        if(count == 1){
            clearInterval(testIntval);
        }
    },0);
    
    setTimeout(function(){
    console.log('延时0ms执行2--' + new Date().getMilliseconds());
    },0);
    

    执行结果有两种,第1种几率更大:
    image.png
    image.png

  • 相关阅读:
    JVM-Java程序性能监控-初级篇
    一段获取app性能指标的py脚本
    一段从TXT导入excel的py脚本
    matplotlib根据Y轴数量伸缩画图的py脚本
    jsonpath读取json数据格式公用方法!!!
    python安装插件包注意事项
    Jenkins持续集成
    Jenkins简介&邮箱配置
    unittest框架扩展(基于代码驱动)自动化-下
    unittest框架扩展(自动生成用例)自动化-上
  • 原文地址:https://www.cnblogs.com/SPHmomo/p/12936091.html
Copyright © 2011-2022 走看看