【发布时间】:2012-11-09 20:22:55
【问题描述】:
我有多个需要串联调用的进程(我正在使用同步 AJAX 调用)。我想在完成后显示一个长时间运行的进程的状态,然后继续下一个。这是我编写的示例代码。
var counter = 0;
function runProcess(input, output) {
doWork();
doWork();
doWork();
};
function doWork() {
counter++;
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Running " + counter;
// some lengthy calculations
for (var i = 0; i < 1000000; i++) {
var foo = Math.random();
}
setTimeout(updateStatus, 1000);
};
function updateStatus() {
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Done " + counter;
}
当我运行它时,我得到以下响应:
跑步1跑步2跑步3完成3完成3完成3
我想得到
运行 1 完成 1 运行 2 完成 2 运行 3 完成 3
如果我在 updateStatus 函数中插入一个 alert() 语句,那么我会得到我想要的响应/执行顺序。浏览器是否为 3 个函数调用创建 3 个线程并异步执行它们?
如何连续运行? setTimeout 是否正确实施?提前感谢您的帮助。
【问题讨论】:
-
这里的 Ajax 调用如何显示?他们会去你样本中的数学循环吗?
-
感谢您的帮助。我刚刚注意到你之前的帖子。为了澄清,这是一个示例代码。在现实世界中,doWork 将被替换为 CallService 函数,该函数将同步调用 WCF 服务。
标签: javascript ajax