此处存在一些间隔问题。clearINterval和范围
基本concpt是,我有一个进度条功能,1元的东西行,是从后端脚本馈信息。我在一段时间内每5秒钟对该脚本执行ping ajax调用。
这个工作,但也有以倍数(即第2个进度条调用相同的功能),或者当项目被“关闭”(一个div幻灯片),应立即停止问题。这是一些非常相互关联的代码,所以我会尽我所能提取必要的部分,但请注意,现在它可能不会运行。
一个完整的步行though-函数名称已更改为保护无辜者:)
onlcick,格打开,该启动功能被称为:
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);
}
这在它和自我正常工作。
如果第2点击事件打开第二窗口,它只是一个新的ID,并调用相同的功能。
因此,我有一个我的时间间隔,并摧毁一个似乎停止一切。 我应该将i转换为对象,如i.ID?
另外,停车时,我有一个onclick =停止()调用,并从外循环,我似乎无法阻止它。
我如何重新安排这个工作?
它应该支持启动,停止和autoupdating,1级或多个同步的项目。
hrm ...我把它作为setTimeout,并被告知这不是要走的路,间隔是更聪明的方法。 这会支持多个呼叫吗? ID = 1和ID = 2调用相同的功能(因此,xstatus响应2个单独的时间间隔)? – briansol 2013-02-20 20:10:54
为什么使用setTimeout'不是要走的路? 它应该适用于多个呼叫;该ID由超时回调关闭,并且每次迭代都向前发送,并且对每次startLoop调用都分别进行维护。我在本地测试了这个,并且有两个并排运行的循环方案似乎工作正常。 – BrMcMullin 2013-02-20 20:34:47
感谢您的建议。我会努力工作并报告我的结果(有大量的事情正在进行) – briansol 2013-02-20 20:57:04