在 JavaScript 中处理时间间隔

在 JavaScript 中处理时间间隔

原文:https://medium.com/hackernoon/handling-time-intervals-in-javascript-83dc70cbfe05

问题

在开发电子应用pomolecon的时候,我需要通过 JavaScriptsetInterval() 功能来处理不同的时间间隔。我基本上需要在我的应用程序中实现三个定时器:

  • 25 分钟的波莫多罗
  • 5 分钟的短暂休息
  • 10 分钟的长时间休息

我可以想出两种方法来实现所有三种情况下的倒计时。第一,使用三种不同的setInterval()实现不同的定时器。第二,找到另一种方式对所有三个定时器使用相同的setInterval()

解决办法

所以,我尝试了第二种方法。我可以对所有三个计时器使用相同的setInterval()方法,将它分配给一个变量,如下所示..

var pomodoroIntervalId;function startTimer(duration, display) {
  timer = duration;
  pomodoroIntervalId = setInterval(function(){
    if (--timer < 0) {
        timer = duration;
    }

    minutes = parseInt(timer/60, 10);
    seconds = parseInt(timer%60, 10); minutes = minutes < 10 ? '0'+minutes : minutes;
    seconds = seconds < 10 ? '0'+seconds : seconds; display.textContent = minutes+ ":" + seconds; if(minutes == 0 && seconds == 0){
      notifyUser();
    }
  }, 1000);
}

然后通过传递间隔 ID 的 clearInterval() 方法首先清除当前时间间隔,从而在其他定时器之间使用相同的startTimer()。在我们的例子中,我把它分配给了一个全局变量pomodoroIntervalId。这基本上清除了当前运行的时间间隔,以便下次设置另一个定时器时使用。代码如下所示..

function resetTimer() {
  clearInterval(pomodoroIntervalId);
}

这给了我们在不同的用例中使用相同的setInterval()函数的好处,这使得代码干净利落。我认为这是 JavasScript 的一个非常方便的特性。

快乐编码!

黑客午间是黑客们下午的开始。我们是 @AMI 家庭的一员。我们现在接受提交并很高兴讨论广告&赞助的机会。

要了解更多信息,请阅读我们的“关于”页面 , 喜欢/在脸书给我们发消息,或者简单地,发推文/DM @HackerNoon。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除