0

我有一个场景,根据该场景,当用户用户在线时,每隔 3 或 4 秒就会向服务器发送一个请求,但是当用户离线时问题开始是我想增加 setinterval 方法的时间jquery 我已经为它编写了代码,但还没有成功:-

我的代码是这样的

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 方法检查互联网连接。

所以,如果你们能帮助我,在此先感谢。

4

2 回答 2

0

由于 JavaScript 中的函数是对象,因此您可以将inter作为字段分配给将在函数调用之间存储的该对象:

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());
于 2013-07-11T05:06:56.937 回答
0

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
于 2013-07-11T05:17:09.903 回答