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