每60秒调用一个函数

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

 setTimeout(function, 60000); 

但是如果我想多次启动这个function呢? 每次经过一个时间间隔,我想执行该function(每60秒,我们假设)。

如果您不关心timer的代码是否会比您的时间间隔更长,请使用setInterval()

 setInterval(function, delay) 

这将激发作为第一个参数一遍又一遍地传入的函数。

更好的方法是,使用setTimeout和一个self-executing anonymous函数:

 (function(){ // do some stuff setTimeout(arguments.callee, 60000); })(); 

这可以保证,在你的代码被执行之前,下一个调用是不被执行的。 我在这个例子中用arguments.callee作为函数的参考。 在setTimeout给这个函数一个名字和调用是一个更好的方法,因为arguments.callee在ecmascript 5中已经被弃用了。

使用

 setInterval(function, 60000); 

编辑:(如果你想停止时钟后启动)

脚本部分

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

和HTML代码

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

更好地使用jAndy的答案来实现轮询function,轮询每个interval秒,并在timeout秒后结束。

 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); 

UPDATE

根据评论,更新它的传递函数停止轮询的能力:

 function pollFunc(fn, timeout, interval) { var startTime = (new Date()).getTime(); interval = interval || 1000, canPoll = true; (function p() { canPoll = ((new Date).getTime() - startTime ) <= timeout; if (!fn() && canPoll) { // ensures the function exucutes setTimeout(p, interval); } })(); } pollFunc(sendHeartBeat, 60000, 1000); function sendHeartBeat(params) { ... ... if (receivedData) { // no need to execute further return true; // or false, change the IIFE inside condition accordingly. } } 
 setInterval(fn,time) 

是你之后的方法。

使用window.setInterval(func, time)

你可以简单地在函数结尾调用setTimeout。 这将再次将其添加到事件队列中。 您可以使用任何种类的逻辑来改变延迟值。 例如,

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

在jQuery中,你可以这样做。

 function random_no(){ var ran=Math.random(); jQuery('#random_no_container').html(ran); } window.setInterval(function(){ /// call your function here random_no(); }, 6000); // Change Interval here to test. For eg: 5000 for 5 sec 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="random_no_container"> Hello. Here you can see random numbers after every 6 sec </div> 

有两种方式来呼叫 –

  1. setInterval(function (){ functionName();}, 60000);

  2. setInterval(functionName, 60000);

上面的function将每60秒调用一次。