每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>
有两种方式来呼叫 –
-
setInterval(function (){ functionName();}, 60000);
-
setInterval(functionName, 60000);
上面的function将每60秒调用一次。