我正在與更改和保存外部文件的servlet進行通信。由於這需要一些時間,我需要一些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");});}
而且this上的jsfiddle的例子。出於某種原因,此代碼在第二次調用時保持循環(當函數調用必須等待時)。
我想你可能會發現[deferreds(http://api.jquery.com/category/deferred-object/)有用... – elclanrs