zoukankan      html  css  js  c++  java
  • 【javascript】setTimeout计时开始时间

    setTimeout是什么时候开始倒计时的?其实是在执行到当前位置的时候,就已经开始计时了,如:
    当定时时间设置为小于阻塞时间(200ms):
    var startTime = window.performance.now();
    console.log('setTimeoutstart',startTime);
    setTimeout(()=>{
    console.log('执行setTimeout时间:'+(window.performance.now()-startTime)+'ms');
    },200);
    console.log('sortstart');
    var sum=function(a,b){
    return Number(a)+Number(b);
    }
    var res=[];
    let start = window.performance.now();
    for(var i=0;i<5000000;i++){
    var a=Math.floor(Math.random()*100);
    var b=Math.floor(Math.random()*200);
    res.push(sum(a,b));
    }
    let end = window.performance.now();
    console.log("for循环花费时间(阻塞时间):",end - startTime);

    执行结果:

     执行结果中可知,setTimeout内部代码的执行时间不是429+200,而是430;

    当定时时间设置为大于阻塞时间(500ms):

    var startTime = window.performance.now();
    console.log('setTimeoutstart',startTime);
    setTimeout(()=>{
    console.log('执行setTimeout时间:'+(window.performance.now()-startTime)+'ms');
    },500);
    console.log('sortstart');
    var sum=function(a,b){
    return Number(a)+Number(b);
    }
    var res=[];
    let start = window.performance.now();
    for(var i=0;i<5000000;i++){
    var a=Math.floor(Math.random()*100);
    var b=Math.floor(Math.random()*200);
    res.push(sum(a,b));
    }
    let end = window.performance.now();
    console.log("for循环花费时间(阻塞时间):",end - startTime);

    执行结果:

     执行结果中可知,setTimeout内部代码的执行时间不是395+200,而是504,接近500;

     因此是在执行到当前位置的时候,就已经开始计时了。

  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/vickylinj/p/14455800.html
Copyright © 2011-2022 走看看