jQueryUIのプログレスバーには、実行されたクエリの割合が表示されます。 Oracleには、10秒以上かかる操作を表示できる素敵なシステム・テーブルがあります。私は進捗バーをリフレッシュするために、このクエリに千鳥の$ .ajax呼び出しをしようとしています。jQuery AJAXループでjQueryUIをリフレッシュするProgressBar
問題は、待機時間なしで迅速なリクエストを行うループを取得するか、JavaScript全体の実行を遅らせることです。
jQueryUIダイアログで「実行」ボタンをクリックすると、最初のリクエストが開始されます。
$("#dlgQuery").dialog({
buttons: {
Execute: function() {
$(this).dialog("close");
StartLoop();
}
}
});
私はStartLoop()
機能のいずれかを構築したり、再帰GetProgress()
機能を作成しようとしています。理想的には、ループを終了したり、関数を再帰的に呼び出すのを止めるための指標として、公共の変数var isDone = false
を使用します。ここ
function StartLoop(){
for (var i = 0; i < 100; i++) {
GetProgress();
}
}
そして、私のサンプルAJAXリクエストです::だから
function GetProgress() {
$.ajax({
url: "query.aspx/GetProgress",
success: function (msg) {
var data = $.parseJSON(msg.d);
$("#pbrQuery").progressbar("value", data.value);
//recursive?
//GetProgress();
//if (data.value == 100) isDone = true;
}
});
}
私が見つけたものは、これまでの単純化のため
私はちょうど100回実行される静的なループを作っています
setTimeout(GetProgress(), 3000)
(StartLoop()
)はJavaScriptがフリーズしてダイアログが閉じることはありません(クエリが完了するまで待つため)。
This 1、pausecomp(3000)
とほぼ同じことです。
私のAJAXリクエストの「成功」機能でこれらのいずれかを呼び出すと、無視されます(おそらく別のコールを非同期で開始しているためです)。
私はちょっとここで立ち往生しています。何か助けていただければ幸いです。
興味深い質問です。 :)私は良い答えを考えることができません。 setIntervalを使ってみましたか?あなたは再帰的な方法を試したときに何が起こったのですか? –
私は急速な要求/応答を受け取ります。 – tedski