我想创建一个计时器,一旦达到某一点,计时器就会重置,然后重新开始。
现在,我已经设置了循环,作为测试,我希望它在5000毫秒(5秒)后重置。但是反击都是乱七八糟的。
答案 0 :(得分:58)
请考虑使用setInterval而不是setTimeout。它将自动重复,直到您清除间隔。
setInterval(myMethod, 5000);
function myMethod( )
{
//this will repeat every 5 seconds
//you can reset counter here
}
答案 1 :(得分:5)
我同意keyboardP您可能应该使用setInterval
而不是setTimeout
。但是,要回答原始问题,您遇到计时器问题的原因是因为您的重复逻辑。不要使用:
var diff = (new Date().getTime() - start) - time;
window.setTimeout(instance, (100 - diff));
您不需要尝试并考虑执行时间(我假设您正在尝试使用diff
)。假设它可以忽略不计并使用:
setTimeout(instance, 100);
您的问题已得到解决,您可以在this jsFiddle中看到。