首页 > Web开发 > 详细

js定时器优化

时间:2019-01-05 17:38:29      阅读:188      评论:0      收藏:0      [点我收藏+]

先看以下两看计时器

setInterval
function sleep(time) {
  let startTime = window.performance.now();
  while (window.performance.now() - startTime < time) {}
}

function test(){
    count++;
    console.log(`第${count}次开始 ${getTime.now() - startTime}`); 
    // 显示开始时间
    //sleep(100); // 程序滞留500ms
    console.log(`第${count}次结束 ${getTime.now() - startTime}`); // 显示结束时间
    count>1000 && clearInterval(t);
}

let count = 0;
let getTime = window.performance;
let startTime = getTime.now();

var t = setInterval(test , 500); // 300ms间隔

最后结果:

 

再来看下setTimeout

 

 

function sleep(time) {
  let startTime = window.performance.now();
  while (window.performance.now() - startTime < time) {}
}

function test(){
  console.log(`第${count}次开始 ${getTime.now() - startTime}`); // 显示开始时间
  //sleep(500); // 程序滞留500ms
  console.log(`第${count}次结束 ${getTime.now() - startTime}`); // 显示结束时间
  count += 1;
  if(count<1000){setTimeout(test,500);}
}

var startTime0 = new Date().getTime();
let count = 0;
let getTime = window.performance;
let startTime = getTime.now();
var t;
//setTimeout(test,500); // 300ms间隔

setTimeout(function () {
  console.log(`第${count}次开始 ${getTime.now() - startTime}`); // 显示开始时间
  //sleep(500); // 程序滞留500ms
  console.log(`第${count}次结束 ${getTime.now() - startTime}`); // 显示结束时间

  count += 1;
  var offset = new Date().getTime() - (startTime0 + count * 500);
    var nextTime = 500 - offset;
//console.log(nextTime);
    if (nextTime < 0) nextTime = 0;
  
  if(count<200){setTimeout(arguments.callee, nextTime);}
            
        }, 500)

 

js定时器优化

原文:https://www.cnblogs.com/7qin/p/10225220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!