这里有一些间隔问题。
基本概念是我有一个进度条功能,每行 1 个,从后端脚本提供信息。我在 ajax 调用的间隔内每 5 秒 ping 一次这个脚本。
这可行,但是存在倍数问题(即,第二个进度条调用相同的函数)或当项目“关闭”(div 幻灯片)时它应该停止。这是一些非常复杂的代码,所以我会尽力提取必要的部分,但请注意,就目前而言,这可能不会运行。
一个完整的步行虽然 - 功能名称已更改以保护无辜者:)
onlcick,div 打开,调用这个 start 函数:
function start(ID){
var request = $.ajax({
url: "script?DO=Start&ID="+ID
, type: "GET"
, cache: false
, dataType: "text"
});
request.done(function(msg) {
startLoop(ID);
});
request.fail(function(jqXHR, textStatus) {
//alert("Request failed: " + textStatus );
});
}
如您所见,这调用了 startLoop fnc,它继续 ping 更新信息脚本 (getInfo()) 以获取信息:
function startLoop(ID){
var i = setInterval(function(){
var xstatus = getInfo(ID);
//other stufff that works
if(xstatus=="done"){
clearInterval(i);
}
}, 5000);
}
这本身就可以正常工作。
如果第二次点击事件打开第二个窗口,它只是有一个新的 ID 并调用相同的函数。
因此,我有一个 i 区间,而摧毁一个似乎可以停止一切。我应该将 i 转换为对象,例如 i.ID 吗?
此外,当停止时,我有一个 onclick =stop() 调用,并且从循环外部,我似乎无法停止它。
我如何重新安排它以使其工作?
它应该支持 1 个或多个同时项目的启动、停止和自动更新。