我希望能够在setInterval上还有时间的情况下运行代码。

  let car = setInterval(function() {
    // stuff
  }, 2000);

  let vehicle = setInterval(function() {
    train()
  }, 1000);

  function train() {
    // stuff
    // and if car has time left, do this stuff too.
  }


在火车功能的最后一行,我想检查汽车的剩余时间,但不了解如何实现这样的概念。
我想知道剩下的确切时间,或者仅仅是剩下的时间对我来说都是一样的,所以哪一个更容易。

最佳答案

这是不可能的。计时器实际上是在JavaScript运行时之外执行的,它们中指定的时间绝不是精确的度量-实际上,这是计时器可以运行的最短时间。实际时间取决于JavaScript运行时的繁忙程度,如果运行时在计时器超时时处于空闲状态,则可以运行计时器的回调函数。

因此,从本质上讲,您必须计算JavaScript执行堆栈需要多少时间才能变为空闲状态,而这是无法做到的,因为要进行时间测量,必须执行其余代码。因此,直到没有时间,您才能得到答案。

但是,根据您的代码,似乎您可以设置一个简单的“ flag”变量,该变量在car运行时设置。因此,您可以在train内部检查是否已设置该标志,如果尚未设置,请运行train代码,然后重置该标志。

关于javascript - setInterval JavaScript的剩余时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45882360/

10-12 12:19
查看更多