javascript - 单击暂停按钮后计时器实际上并未停止

标签 javascript

单击暂停按钮后,计时器显示为停止,但当我单击恢复时,我发现计数器继续在幕后倒计时。我想 setInterval 有问题。请帮我。我在 CodePen 上的项目如果需要,供引用。

我的定时器功能

function timer(seconds) {
  clearInterval(countdown);
  const now = Date.now();
  const then = now + seconds * 1000;
  displayTimerLeft(seconds);
  console.log({
    now,
    then
  });
  countdown = setInterval(() => {
    if (!isPaused) {
      const remainSeconds = Math.round((then - Date.now()) / 1000);
      if (remainSeconds < 0) {
        clearInterval(countdown);
        return;
      }
      displayTimerLeft(remainSeconds);

    }
  }, 1000);

}

暂停和开始点击事件

pause.addEventListener('click', function() {
  isPaused = true;
  return;

})

start.addEventListener('click', function() {
  isPaused = false;
})

最佳答案

看看你的代码,我想问题是你保持相同的 then 值,这最终是计时器应该结束的时间戳。现在,您不是暂停倒计时,而是停止显示更改。

我建议改用您的变量 seconds(并使用模 % 计算显示),并每秒递减一次。这样,暂停显示将有效地暂停减少。

关于javascript - 单击暂停按钮后计时器实际上并未停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41572879/

相关文章:

javascript - 如何在不知道其位置的情况下删除 Mongo 对象(向下嵌套 2 个数组)?

javascript - 在javascript中的backbone js中使用时如何创建模型对象

javascript - 是否可以在 GitHub 页面上的 HTML 文件上加载 javascript 代码?

javascript - 使用 javascript/jquery 伪造 Gif

javascript - 悬停动画在动画结束后恢复到开始

javascript - 使用 Ember js 从非嵌套路由访问路由模型

javascript - 我应该如何处理 React 组件库中的国际化?

javascript - 在载有图像的 Canvas 上通过鼠标拖动画一条线

javascript - Draft-js 保存和显示 HTML

javascript - 阻止主干将周围的 div 添加到 View 中?