此處存在一些間隔問題。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