Nicholas Zakas在他的博客上写了一篇关于浏览器中计时器分辨率的精彩总结。正如 Nicholas 指出的那样,HTML5 计时器规范(截至 2012 年 8 月 2 日)规定 和 的最小间隔为setTimeout()
4setInterval()
毫秒。
我编写了以下演示应用程序来测试goog.Timer
.
<!doctype html>
<html>
<head>
<title>goog.Timer Test</title>
<script src="../closure-library/closure/goog/base.js"></script>
</head>
<body>
<h1>goog.Timer Test</h1>
<div id="mainContent"></div>
<script>
goog.require('goog.Timer');
</script>
<script>
var tickCount = 0;
var timer = new goog.Timer(1);
var mainDiv = document.querySelector('#mainContent');
/**
* Tick callback.
*/
var tickCounter = function() {
tickCount++;
if (tickCount % 1000 === 0) {
var timeElapsed = goog.now() - startTime;
mainDiv.innerHTML = 'goog.Timer tick events: ' + tickCount +
'<br>actual elapsed milliseconds: ' + timeElapsed +
'<br>milliseconds per goog.Timer tick: ' + timeElapsed/tickCount;
}
};
startTime = goog.now();
timer.start();
goog.events.listen(timer, goog.Timer.TICK, tickCounter);
</script>
</body>
</html>
在 Chrome 版本 21 中运行该程序始终显示每个goog.Timer
滴答事件大约 4.2 毫秒,这非常接近 4 毫秒的最小允许浏览器计时器分辨率。