脱机SetInterval jquery时的时间增加
我有一个场景,当用户在线时,每隔3或4秒向服务器发送一个请求,但当用户离线时,问题开始于该场景我想增加jquery的setinterval方法的时间我已经为其编写了代码,但尚未成功:- 我的代码是这样的脱机SetInterval jquery时的时间增加,jquery,Jquery,我有一个场景,当用户在线时,每隔3或4秒向服务器发送一个请求,但当用户离线时,问题开始于该场景我想增加jquery的setinterval方法的时间我已经为其编写了代码,但尚未成功:- 我的代码是这样的 var interval= function(){ if(hasInternets()){ var inter= 15000; return inter; } else { var
var interval= function(){
if(hasInternets()){
var inter= 15000;
return inter;
}
else
{
var inter= 15000;
inter+= 15000;
return inter;
}
};
setInterval( function(){
if (hasInternets()) {
// here I am doing something
}
}, interval());
hasInternet方法检查internet连接
所以,如果你们能帮助我,请提前感谢。因为JavaScript中的函数是对象,所以可以将
inter
as字段指定给该对象,该对象将在函数调用之间存储:
var interval = function(inter) {
if (!interval.inter) {
interval.inter = 15000;
}
if (hasInternets()) {
return interval.inter;
} else {
interval.inter += 15000;
return interval.inter;
}
};
setInterval(function() {
if (hasInternets()) {
// here I am doing something
}
}, interval());
setInterval()
只调用一次,初始传递的间隔作为第二个参数。它不会在每次执行后重新评估间隔
要解决此问题,您可以使用setTimeout()
,根据条件使用不同的间隔
var interval= function() {
return hasInternets() ? 15000 : 30000;
};
function doStuff() {
if (hasInternets()) {
// ...
}
// recalculate interval and continue
setTimeout(doStuff, interval());
}
setTimeoue(doStuff, interval()); // start it off
该功能的主要目的是什么?它的作用是什么?这就是我们所说的指数退避,它的用途是当您脱机时,当您脱机时,您希望增加向服务器发送ajax请求的时间,这样就不会受到客户端不必要的影响。感谢techfoobar提供的解决方案,但我也有一个解决方案,需要你对我的解决方案的意见。var计数器=1000;var myFunction=function(){clearInterval(interval);if(hasInternet()){counter+=2000;console.log(“指数测试”)console.log(counter)}interval=setInterval(myFunction,counter);}var interval=setInterval(myFunction,counter)@铁路工人-是的,这也应该有效。但是,由于每次都要取消并重新启动
setInterval()
,因此setTimeout()
也可以。