文章目录
一、背景
最近项目中加了一个计时器,我是用setInterval来实现计时的,用于显示订单剩余支付时间,但我发现,短时间还好,时间长了,计时器的误差会很大。
二、问题
我现在来模拟一下这个问题
1.用setInterval实现计时
来看段代码
var start = new Date().getTime(), count = 0;
var interval = setInterval(function () {
count++
console.log(new Date().getTime() - (start + count * 1000) + 'ms')
if(count == 10){
clearInterval(interval);
}
}, 1000)
可以看到,我打印的new Date().getTime() - (start + count * 1000) ,
也就是每次计时的误差,理想情况下,应该是0。
2.用setTimeout实现计时
var start = new Date().getTime(), count = 0,interval = 1000;
var timer = setTime