Javascript 每60秒调用一个函数

Javascript 每60秒调用一个函数,javascript,function,timer,setinterval,Javascript,Function,Timer,Setinterval,使用setTimeout()可以在指定时间启动函数: setTimeout(function, 60000); 但是,如果我想多次启动该功能,该怎么办?每次经过一个时间间隔,我都希望执行该函数(比如说,每60秒执行一次)。使用 setInterval(function, 60000); 编辑:(如果您想在时钟启动后停止时钟) 脚本部分 <script> var int=self.setInterval(function, 60000); </script> var

使用
setTimeout()
可以在指定时间启动函数:

setTimeout(function, 60000);
但是,如果我想多次启动该功能,该怎么办?每次经过一个时间间隔,我都希望执行该函数(比如说,每60秒执行一次)。

使用

setInterval(function, 60000);
编辑:(如果您想在时钟启动后停止时钟)

脚本部分

<script>
var int=self.setInterval(function, 60000);
</script>

var int=自身设置间隔(函数,60000);
和HTML代码

<!-- Stop Button -->
<a href="#" onclick="window.clearInterval(int);return false;">Stop</a>


是您所使用的方法。

如果您不关心
计时器中的代码是否比您的时间间隔长,请使用:

它反复激发作为第一个参数传入的函数

更好的方法是使用
setTimeout
自动执行匿名
函数:

(function(){
    // do some stuff
    setTimeout(arguments.callee, 60000);
})();
这保证了在执行代码之前不会进行下一次调用。在本例中,我使用
参数.callee
作为函数引用。给函数一个名称并在
setTimeout
内调用它是一种更好的方法,因为在ecmascript 5中,
参数.被调用方
被弃用。

使用。

更好地使用's来实现轮询函数,该函数每隔
间隔
秒轮询一次,并在
超时
秒后结束

function pollFunc(fn, timeout, interval) {
    var startTime = (new Date()).getTime();
    interval = interval || 1000;

    (function p() {
        fn();
        if (((new Date).getTime() - startTime ) <= timeout)  {
            setTimeout(p, interval);
        }
    })();
}

pollFunc(sendHeartBeat, 60000, 1000);
函数pollFunc(fn,超时,间隔){ var startTime=(新日期()).getTime(); 间隔=间隔| | 1000; (功能p(){ fn();
如果(((new Date).getTime()-startTime)您只需在函数末尾调用setTimeout。这将再次将其添加到事件队列中。您可以使用任何类型的逻辑来更改延迟值。例如

function multiStep() {
  // do some work here
  blah_blah_whatever();
  var newtime = 60000;
  if (!requestStop) {
    setTimeout(multiStep, newtime);
  }
}

有两种方法可以打电话-

  • setInterval(函数(){functionName();},60000);

  • setInterval(functionName,60000);


  • 上述函数将每60秒调用一次。

    在jQuery中,您可以这样做

    函数随机_no(){
    var ran=Math.random();
    jQuery('#random_no_container').html(ran);
    }
    setInterval(函数(){
    ///在这里调用你的函数
    随机_no();
    },6000);//更改此处的间隔以进行测试。例如:5000,持续5秒
    
    
    您好。这里您可以看到随机数后,每6秒
    
    在这里,我们使用
    setInterval()

    函数随机(数字){
    返回Math.floor(Math.random()*(number+1));
    }
    设置间隔(()=>{
    常量rndCol='rgb('+random(255)+'、'+random(255)+'、'+random(255)+');//rgb值(0-255,0-255,0-255)
    document.body.style.backgroundColor=rndCol;
    },1000);
    
    它每1秒改变一次背景颜色(在JS中写为1000)
    每2秒调用一个Javascript函数,持续10秒。
    var区间承诺;
    $scope.startTimer=函数(fn、延迟、超时){
    intervalPromise=$interval(函数(){
    fn();
    var currentTime=new Date().getTime()-$scope.startTime;
    如果(当前时间>超时时间){
    $interval.cancel(intervalPromise);
    }                  
    },延误);
    };
    $scope.startTimer(你好,2000,10000);
    你好(){
    console.log(“你好”);
    
    }
    订阅
    setInterval()
    并使用
    clearInterval()
    停止永久循环的好例子:

    function myTimer() {
    
    }
    
    var timer = setInterval(myTimer, 5000);
    
    调用此线路以停止循环:

    clearInterval(timer);
    

    在代码完成执行之前,不可能进行下一次调用。计时器异步倒计时,但回调必须排队。这意味着您的回调可能会(也可能会)超过60秒后触发。区别在于setInterval通常会在上一次迭代开始后x毫秒运行函数,而这里的方法会在上一次迭代结束后x毫秒运行下一次迭代,这是对其他可能会发现此--
    clearInterval()的人的一个提示
    setInterval()
    的合作函数,如果您想停止周期性函数调用,它会派上用场。请注意,setInterval在延迟毫秒后第一次执行函数。因此,如果您想立即执行函数,然后重复每个延迟,您应该执行:func();setInterval(func,delay);我只是不懂这个参数。被调用的东西。我有getRates()函数,但是(function(){getRates();setTimeout(getRates(),10000);})();不起作用:/在这种情况下,在它开始重复之后,您将如何阻止它重复?您将如何从
    sendHeartBeat
    中停止轮询?这是一个很好的例子!当您使用计时器时,编写单元测试会更加困难,但使用这种方法-这是一个很好的答案。请更新新日期的一种用法,以便首先,它们是一致的,一个使用(new Date).getTime(),另一个使用(new Date()).getTime()。虽然
    间隔
    超时
    都是以毫秒为单位,但两者似乎都可以正常工作,不是吗?数字大约每12秒更新一次-这不应该是一分钟吗?请参阅注释
    //在此处更改间隔以进行测试。例如:5000 For 5秒
    当前设置为每6秒更改一次。使用值60000表示分钟位如果能解释一下它是如何解决这个问题的,那就太好了。
    function multiStep() {
      // do some work here
      blah_blah_whatever();
      var newtime = 60000;
      if (!requestStop) {
        setTimeout(multiStep, newtime);
      }
    }
    
    // example:
    // checkEach(1000, () => {
    //   if(!canIDoWorkNow()) {
    //     return true // try again after 1 second
    //   }
    //
    //   doWork()
    // })
    export function checkEach(milliseconds, fn) {
      const timer = setInterval(
        () => {
          try {
            const retry = fn()
    
            if (retry !== true) {
              clearInterval(timer)
            }
          } catch (e) {
            clearInterval(timer)
    
            throw e
          }
        },
        milliseconds
      )
    }
    
    var count = 0;
    function abc(){
        count ++;
        console.log(count);
    }
    setInterval(abc,60*1000);
    
    function myTimer() {
    
    }
    
    var timer = setInterval(myTimer, 5000);
    
    clearInterval(timer);