我正在尝试执行Ajax调用来检查数据库表是否已使用某些特定的新数据进行更新。
我在这个question中找到了解决方案的一部分:而不是使用while
循环(显然充斥浏览器),应该使用两个独立的函数,其中一个使用{{1} (解释为什么这个技巧成功地允许Ajax调用不重叠并泛滥浏览器here和此video)。
我的问题是:如何强制每次Ajax调用之间的特定时间间隔?我已经尝试将时间设置为优于0(例如setTimeout(fn,0)
),但这似乎对每个Ajax调用之间的实际延迟没有影响:一旦完成,下一个开始。
注意:在下面的示例中,我有一个开/关开关(存储在setTimeout(checkNewData(), 7000);
中),可以切换以中断过程
autoload_switch
答案 0 :(得分:0)
现有代码中只有1个错误
你写过
setTimeout(checkNewData(),7000); ,
而不是
setTimeout(checkNewData,7000);
我希望这能解决你的问题
checkNewData(); //starts the looping function
function checkIfAutoLoadOn(){
if(autoload_switch === "on")
setTimeout(checkNewData, 7000);
}
function checkNewData() {
//Check if solutions
$.ajax({
async: true,
type: "POST",
url: "cgi-bin/check_NewData.py",
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
data: JSON.stringify(data_refs),
dataType: "json"
})
.done(function(result) {
if (result["new_data"]==="true") {
// Do sth with data
} else if (result["new_data"]==="false") {
//Check again in some seconds if new data arrived
checkIfAutoLoadOn()
}
})
}