首页 > 解决方案 > 创建一个在 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)。该值由视频播放列表的长度决定(我正在为视频节目构建“实时”播放头)并且是一个变量。

我不知道该怎么做,因为计数器从某个时间点开始计算经过的时间,它不太符合我正在寻找的逻辑。任何建议,将不胜感激。

标签: javascriptnode.jssetinterval

解决方案


在所需的时间过去后,您可以.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);


推荐阅读