【问题标题】:How to loop a function for a certain duration in JS如何在JS中循环一个函数一段时间
【发布时间】:2014-03-18 15:02:49
【问题描述】:

我读过 w3schools:

  • setInterval() 方法将等待指定的毫秒数,然后执行指定的函数,并在每个给定的时间间隔内继续执行该函数。

  • setTimeout()方法会等待指定的毫秒数,然后执行指定的函数。

我都试过了。然而,这不是我需要的。

我想要一个持续循环直到达到持续时间的函数。

有解决方法吗?谢谢!

【问题讨论】:

    标签: javascript


    【解决方案1】:
    var start = new Date();
    var timer_id = setInterval(function() {
      // the duration is 10 seconds
      if (new Date() - start > 10000) {
         clearInterval(timer_id);
      } else {
         your_function();
      }
    }, 1000); // every 1 second your function will run, you could change it by your needs.
    

    【讨论】:

      【解决方案2】:

      您可以在没有任何 setTimeouts 或 setIntervals 的情况下执行此操作:

      var t1 = new Date().getTime();
      var interval = 100;
      while(new Date().getTime() - t1 < interval){
          // do stuff;
      }
      

      这将连续循环 100 毫秒。

      【讨论】:

      • 由于没有睡眠功能,这个循环会占用你所有的 CPU。此外,其他超时不会在某些 JavaScript 引擎中触发,因为它们是单线程的,并且需要外部函数在触发超时和间隔之前返回。请参阅xdazz 的解决方案
      • 所以xDazz的答案更好?
      • 好吧,OP 说他希望函数“连续循环”,所以我特意提出了一个解决方案,当这个函数循环时几乎不会执行任何其他操作。
      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多