我的fiddle链接如下:http://jsfiddle.net/FvYyS/2/
函数调用如下:
load_timer('0', '6', '9', 0, '0', '', '0');
实际上我的问题是 fiddle 不工作。此代码的预期行为是计时器应逐秒减少并最终达到零(即,例如计时器应从 00:06:09 开始并在 00:00:00 结束)。但它在这里不起作用。该代码在我的应用程序中正常工作,但不知道为什么该代码无法正常工作。我在我的应用程序中注意到的另一个问题是计时器有时会滞后。任何人都可以在这方面帮助我吗?如果您需要任何进一步的信息,我会为您提供相同的信息。提前致谢。
最佳答案
您的代码具有以下结构:
var counter = delay;
function loop() {
counter--;
displayTime(delay, counter);
if (counter > 0) {
setTimeout( loop, 1000 );
}
}
2 件事:
displayTime()
执行需要时间:例如,如果需要 0.2 秒才能完成,则循环将每 1.2 秒(而不是每秒)执行一次setTimeout( ..., 1000 )
意思是“亲爱的 javascript 运行时,你能在 1 秒内运行我的代码吗?如果你有其他事情要做,我可以再等一会儿”
您可以保证在setTimeout
调用和您的loop
执行之间至少 1 秒,但延迟可能会更长。
如果您想避免时间漂移,请检查每次迭代的真实时间:
var start = Date.now();
function loop() {
var now = Date.now();
var elapsedTime = now - start; //elapsed time in milliseconds
displayTime(delay, elapsedTime);
if (elapsedTime < delay) {
setTimeout(loop, 1000);
}
}
关于javascript - 为什么 fiddle 不工作并且在以下情况下有时间滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597700/