外部ファイルを変更して保存するサーブレットと通信しています。これには時間がかかるため、ある関数のアクションが別の関数のアクションを妨害しないように、JavaScript 関数呼び出しのいくつかを順番に実行する必要があります。
これを行うために、busyflag が false に設定されている場合 (つまり、他の関数呼び出しが同時に処理されない場合) にのみ呼び出すことができる別の関数を取る「順次」関数を作成しました。これは私のコードです:
var busy = false;
function sequential(action) {
while(busy)
setTimeout(function(){sequential(action);}, 10);
busy = true;
action();
setTimeout(function(){busy = false;}, 100);
}
function test1() {sequential(function() {alert("test1");});}
function test2() {sequential(function() {alert("test2");});}
これは jsFiddle の例です。何らかの理由で、このコードは 2 番目の呼び出しでループし続けます (関数呼び出しを待機する必要がある場合)。