この質問は同時実行の問題を扱います。ビジー アイコンを表示する方法に関する提案については、次の質問を参照してください。
ユーザーがページで AJAX リクエストを開始するとき、ある種の「作業中」またはビジー状態のアイコンまたは進行状況インジケーターを表示すると便利です。長時間実行されるプロセスが 1 つしかない場合、これは比較的簡単な方法で処理できます。
function do_action() {
show_busy_icon();
long_running_asynchronous_process(function() {
// Callback function run when process finishes
hide_busy_icon();
});
}
ただし、ページで複数の非同期プロセスが実行されている場合、on/off メソッドを使用しても機能しません。追加のプロセスが実行されていても、最初に終了したプロセスによってアイコンがオフになります。
では、1 つ以上のプロセスが実行されている場合はオンになり、プロセスが実行されていない場合はオフになるインジケーターを Web ページに表示するにはどうすればよいでしょうか?
実行中のプロセス数のカウントを維持することは可能だと思います。hide_busy_icon()
プロセス数が0の場合にのみアイコンを非表示にします。これはちょっと失敗しやすいようです。おそらく、私が見ていないより良い/より簡単な方法があります。
あなたのアイデアや提案をありがとう!
編集:マークされた回答のソリューションをしばらく使用した後、非常にうまく機能していると言ってうれしいです。私が遭遇した唯一の問題は、自分のスクリプトが自分が制御していないスクリプトの関数を呼び出す場合です。これらの関数がコールバックの提供を許可しない限り、開始時と終了時にプロセス数を更新する方法はありません。
これが発生する可能性がある場所の例は、一連のマーカーを Google マップに追加することです。スクリプトが Google マップ関数を呼び出すと、ビジー アイコンは消えますが、マーカーはまだ読み込まれています。
これを処理する良い方法がわかりません。