javascript中的setInterval基于所做的更改

时间:2013-02-04 12:50:08

标签: javascript jquery ajax

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

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

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

请问好吗?我会很感激。提前谢谢。

2 个答案:

答案 0 :(得分: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
    }
}

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

答案 1 :(得分: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)来改变之后的时间段