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