我有這個javascript函數,它使用計時器每2秒調用一次ajax文件。
但是,我發現在執行完以前的數據之前,會將此數據發送到ajax文件。也就是說,它在大約10秒內發送整個列表,而數據大約需要120秒才能處理。將javascript定時器函數轉換爲使用異步調用
有沒有辦法,我可以發送下一個數據節點,只有當前一個完成處理? cb.call(this)
正在用來調用一個函數,當這個定時器完成時,
而querylimit
是一個響應變量,如果它是真的退出函數。
var i = 0;
var querylimit=false;
function refreshTimer(list,cb,i){
if (!(i >= 0)) { i= 0; }
setTimeout((function(chunk){
i++;
return function(){
if (querylimit) { cb.call(this); }
if(i <= list.length && !querylimit){
refreshTimer(list,cb,i);
refreshClients(chunk);
}
if(i == list.length+1) { cb.call(this); }
if(i > list.length+1 || querylimit) { return null; }
}
}) (list[i]), 2000);
}
問候
尼基爾古普塔
「(!(I> = 0)){IF」 - > ???? omg :)無論如何,不明白你想要完成什麼。你想鏈接函數調用?那麼,爲什麼你使用setTimeout?當第一個結束時,請致電下一個。 – 2011-03-06 10:21:47
當'我'有其他值(我使用'我'很多,因此..)是一個錯誤的事情? :| – Stoic 2011-03-06 10:27:13