我正在与更改和保存外部文件的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