<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p id="message"></p>
</body>
<script type="text/javascript">
var message = document.getElementById("message");
var count = 1000;
function animate() {
var start = +new Date();
message.innerHTML = count--;
var finish = +new Date();
setTimeout(animate, 1000 - (finish-start));
}
animate();
</script>
</html>
本例实现了倒数1000秒的功能,我们在使用setTimeout的时候如果要一个函数每每隔1秒执行一次就会这样写
setTimeout(animate, 1000);
但是这样会忽略animate方法本身的运行时间,所以我们可以在执行animate方法的时候计算这个方法主要的语句的执行时间,之后在setTimeout中减去那个由于运行语句而耽搁的时间,从而实现更加精确的计时