我正在与一个更改并保存外部文件的 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");});}
这是jsFiddle上的示例。由于某种原因,这段代码在第二次调用时不断循环(当函数调用必须等待时)。