console.time("time")
setTimeout(function(){console.timeEnd("time")},10);
复制代码
输出:time:10.9619140625ms
异步
console.time();
var i = 0;
for(var s =1;s<100000;s++){
i += s;
};
setTimeout(function(){console.timeEnd()},10);
复制代码
输出:time:24.440185546875ms
动画
var IntervalId= setInterval(function(){console.log(Date.now())},10);
var i = 0;
for(var s =1;s<1000000;s++){
i += s;
};
setTimeout(function(){clearInterval(IntervalId)},100);
复制代码
输出:ui
1525943129602
1525943129607 // 距离上一次只间隔了5ms
1525943129618
1525943129628
1525943129639
1525943129648
1525943129657
1525943129669
1525943129678
1525943129688
1525943129699
复制代码
// 简单粗暴的方法
var FPS = 60;
setInterval(draw, 1000/FPS);
// 当draw方法执行耗时大于1000/60 ms时,就会发生丢帧的现象。
复制代码
setTimeout()和setInterval()都不能知足精确的时间间隔。假如设定的时间间隔为10ms,则setTimeout(fn, 10)中的fn执行的时间间隔可能大于10ms,而setInterval(fn, 10)中fn执行的时间间隔可能小于10ms。spa