サーバー側でコマンド文字列を実行し、その結果をクライアントに返す非同期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コールが終了した後、別のAjaxコールを起動したい。また、axashCallRepeated()はさまざまなパラメータで呼び出されるので、いくつかのAjax呼び出しが並行して実行されますが、各CommandStrではAjax呼び出しが1回しか実行されず、Ajax呼び出しが返された後でもう1つX秒後に解雇される。
私はこのストレートを取得してみましょう。以前のajax呼び出しがまだ完了していない可能性があるという事実に関係なく、X秒ごとに呼び出すようにコールバックで新しいajax呼び出しをスケジュールしたい場合や、順番にajax呼び出しを実行したい場合(前の呼び出し終了しましたか? – WTK
前のAjaxコールが終了した後、別のAjaxコールを起動したい。また、axashCallRepeated()はさまざまなパラメータで呼び出されるので、いくつかのAjax呼び出しが並行して実行されますが、各CommandStrではAjax呼び出しが1回しか実行されず、Ajax呼び出しが返された後でもう1つX秒後に解雇される。 – AlexStack
最初のAjax呼び出しが終了してから2番目のAjax呼び出しが実行されると、私はカスタムイベントを起動します。 –