javascript - 创建一个在 Javascript 中循环的精确毫秒计时器
问题描述
经过一些研究,我了解在 Javascript 中创建计时器的最准确方法是使用 date.now() 比较从起点经过的时间 - 正如这个答案所暗示的那样。
var startTime = Date.now();
var interval = setInterval(function() {
var elapsedTime = Date.now() - startTime;
var time = (elapsedTime / 1000).toFixed(3);
console.log(time);
}, 10);
这提供了我正在寻找的准确性,但我希望让这个计时器在某个值之后自行重置(比方说var total = 12000
)。该值由视频播放列表的长度决定(我正在为视频节目构建“实时”播放头)并且是一个变量。
我不知道该怎么做,因为计数器从某个时间点开始计算经过的时间,它不太符合我正在寻找的逻辑。任何建议,将不胜感激。
解决方案
在所需的时间过去后,您可以.setTimeout()
在代码末尾使用 a重新启动您的.setInterval()
function runInterval (loopAfter) {
var startTime = Date.now();
var interval = setInterval(function() {
var elapsedTime = Date.now() - startTime;
var time = (elapsedTime / 1000).toFixed(3);
console.log(time);
}, 10);
setTimeout(() => {
clearInterval(interval);
runInterval(loopAfter);
}, loopAfter);
}
runInterval(5000);