我遇到了javascript要求的问题。我有一个html使用setInterval每隔1500ms永久调用一个脚本。
var t = setInterval(loadData(),1500);
loadData函数调用一个脚本,该脚本将JSON作为列表返回,我想要做的是从固定间隔更改为可变间隔。例如,如果两次调用脚本之间没有进行任何更改,则必须为该间隔设置另一个值。我听说我可以使用jquery linq来比较开头列表的长度和刷新时更新时间值的列表。我还听说我可以在一个cookie中保存count的值来进行比较。
请问好吗?我会很感激。提前谢谢。
答案 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)来改变之后的时间段