我有一個異步Ajax函數,它在服務器端運行命令字符串並將結果返回給客戶端。它調用回調來處理結果。異步調用後設置計時器返回
function ajaxCall(commandStr,callback){
var url=......//make a url with the command string
jquery.get(url,function(result){
//process the result using callback
callback(result);
});
}
異步調用(AjaxCall的)可以採取以完成一段時間,但我希望它的間隔(1000毫秒)之後執行相同的命令。
我想編寫一個函數,是這樣的:
function ajaxCallRepeated(interval,commandStr,callback)
我試圖關閉就像這樣:
function ajaxCallRepeated(interval,commandStr,callback){
//This feature uses closures in Javascript. Please read this to know why and how: http://jibbering.com/faq/notes/closures/#clSto
function callLater(param1,param2,param3){
return (function(){
ajaxCall(param2,function(out,err){
if(param3)param3(out,err);
var functRef = callLater(param1,param2,param3);
setTimeout(functRef, interval);
});
});
}
//the first call
var functRef = callLater(interval,commandStr,callback);
setTimeout(functRef, interval);
}
然後我把它稱爲是這樣的:
ajaxCallRepeated(2000,"ls",function(result){
alert(result);
});
但它只運行該命令2次。 如何編寫一個函數,在它被稱爲異步函數的回調後重新調度自己?
PS。在上一個完成後,我想發起另一個Ajax調用。另外,值得一提的是,axashCallRepeated()會被各種參數調用,所以幾個Ajax調用並行運行,但是對於每個commandStr,只有一個Ajax調用正在進行,在Ajax調用返回之後,另一個將會在X秒後被解僱。
讓我得到這個直。您希望使用您的回調計劃新的ajax調用,以便每X秒觸發一次**,而不管前一個ajax調用可能尚未完成的事實,還是您希望按順序觸發ajax調用(在之前的一個之後激發另一個調用完成)? – WTK 2012-03-01 09:02:38
我想在上一個Ajax調用完成後再觸發另一個Ajax調用。另外,值得一提的是,axashCallRepeated()會被各種參數調用,所以幾個Ajax調用並行運行,但是對於每個commandStr,只有一個Ajax調用正在進行,在Ajax調用返回之後,另一個將會在X秒後被解僱。 – AlexStack 2012-03-01 09:06:06
當第一個Ajax調用完成時,我會觸發一個自定義事件,然後執行第二個Ajax調用! – 2012-03-01 09:11:13