0

我遇到了 javascript 要求的问题。我有一个 html 使用 setInterval 每 1500 毫秒永久调用一次脚本。

 var t = setInterval(loadData(),1500);

loadData 函数调用一个脚本,该脚本将 JSON 作为列表返回,我想要做的是从固定间隔更改为可变间隔。例如,如果两次调用脚本之间没有更改,我必须为间隔设置另一个值。听说可以用jquery linq比较开头的列表长度和刷新时的列表长度来改变时间值。我还听说我可以将 count 的值保存在 cookie 中以便始终进行比较。

请问有什么想法吗?我将感激不尽。提前致谢。

4

2 回答 2

2

我猜你正在尝试做:

var speed = 1500,
    t = setInterval(loadData, speed);

function loadData() {
    if (something == true) {
        something = false;
        speed = 3000;
        clearInterval(t);
        t = setInterval(loadData, speed);
    }else{
        //do something
    }
}

您应该只引用该函数,添加括号会立即运行该函数。当使用速度变量时,您需要清除并再次运行间隔函数以更改速度。

于 2013-02-04T12:51:56.717 回答
2

如果间隔是可变的,那么您不能使用 setInterval,第一次调用后不会更改哪个时间段。您可以使用 setTimeout 更改时间段:

var period=1500
var timer;
var callback = function() {
    loadData();
    timer = setTimeout( callback, period )
};

var changePeriod = function( newPeriod ) {
    period = newPeriod;
}

//first call
callback();

现在,您只需要调用 changePeriod( ms ) 来更改之后的时间段

于 2013-02-04T12:57:38.900 回答