連続して呼び出す必要がある複数のプロセスがあります (同期 AJAX 呼び出しを使用しています)。長時間実行されているプロセスの完了後にステータスを表示し、次のプロセスに進みたいと思います。ここに私が書いたサンプルコードがあります。
var counter = 0;
function runProcess(input, output) {
doWork();
doWork();
doWork();
};
function doWork() {
counter++;
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Running " + counter;
// some lengthy calculations
for (var i = 0; i < 1000000; i++) {
var foo = Math.random();
}
setTimeout(updateStatus, 1000);
};
function updateStatus() {
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Done " + counter;
}
これを実行すると、次の応答が返されます。
実行中 1実行中 2実行中 3完了 3完了 3完了 3
私は取得したいです
実行中 1完了 1実行中 2完了 2実行中 3完了 3
updateStatus 関数に alert() ステートメントを挿入すると、必要な応答/実行順序が得られます。ブラウザは 3 つの関数呼び出しに対して 3 つのスレッドを作成し、それらを非同期で実行していますか?
これを連続して実行するにはどうすればよいですか?setTimeout は正しく実装されていますか? 事前にご協力いただきありがとうございます。