我正在尝试倒计时,以毫秒为单位倒计时;然而,倒计时实际上需要超过7秒。知道为什么?
function countDown(time){
var i = 0;
var interval = setInterval(function(){
i++;
if(i > time){
clearInterval(interval);
}else{
//mining
$('#mining_time').text($('#mining_time').text()-1);
}
}, 1);
}
我可以确认传递给函数的可变时间是否正确设置为7000。
答案 0 :(得分:3)
对于大多数准确的倒计时,请使用setTimeout()
。
setTimeout(fn, 7e3);
如果您必须尽可能接近7秒,请使用紧密轮询(requestAnimationFrame()
)并查看开始时间与当前轮询之间的差异。
var startTime = Date.now();
requestAnimationFrame(function me() {
var deltaTime = Date.now() - startTime;
if (deltaTime >= 7e3) {
fn();
} else {
requestAnimationFrame(me);
}
});
根据需要进行填充。
答案 1 :(得分:2)
setTimeout
ms {/ 1}} 答案 2 :(得分:1)
没有浏览器会将1作为setInterval的参数。在我的头顶,最小值是4毫秒。
要获得准确的结果,请获取当前时间,添加7000毫秒,并轮询(使用setInterval或setTimeout),直到达到新的时间。
快速网络搜索返回this article,提供了一个示例。
[更新] this MDN page上提到了4 ms的值。