【发布时间】:2012-05-08 19:28:32
【问题描述】:
我正在与更改并保存外部文件的 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 有用...
标签: javascript servlets settimeout sequential