在这个例子中计时器如何倒计时?代表 new Date().getTime() 的日期如何大于 nextDate ?任何人都可以解释一下吗?

how timer count down in this example ? how date which represent new Date().getTime() is greater than nextDate ? could any one explain that pls?

日期如何大于 nextDate ??

谁能解释清楚这段代码是如何工作的?

  const controlTime = () => {
    let second = 1000
    let date = new Date().getTime()
    let nextDate = new Date().getTime() + second
    let interval = setInterval(() => {
      date = new Date().getTime()
      if (date > nextDate) {  // how date is greater than nextDate ??
        setDisplayTime((prev) => {
          return prev - 1
        })
        nextDate += second  // how it will be as a result ???
      }
    }, 30)
  }

首先,函数 setDisplayTime 和 var prev 没有包含在你的代码中,所以我无法准确解释,但我可以从函数名推断出它改变了 UI.

某处的显示时间

但是,对于您问题的其他方面: date 最终会变得大于 nextDate 因为在 setInterval 函数期间,日期变量每 30 毫秒(不是你在评论中说的秒,计时器在JS 以毫秒为单位工作)。 nextDate 仅在不断增加的 date 变量超过存储在 nextDate.

中的当前值时才会更新

nextDate += secondnextDate = nextDate + second的简写增量计算。此代码将一秒(或在第二个变量中设置的 1000 毫秒)添加到 nextDate 并使用更新后的值重置同一变量。因此,它再次大于 date,因此我们的检查每 30 毫秒再次运行一次,并且只要代码为 运行.

就会重复一次