【发布时间】:2015-11-24 18:49:30
【问题描述】:
我编写了需要 20-30 秒来处理的 javascript,我想通过更新网页上的进度条来显示进度。
我使用 setTimeout 来尝试重新绘制网页。
这就是我的代码的样子:
function lengthyFun(...){
for(...){
var progress = ...
document.getElementById('progress-bar').setAttribute('style',"width:{0}%".format(Math.ceil(progress)));
var x = ...
// Processing
setTimeout(function(x) { return function() { ... }; }(x), 0);
}
}
它不起作用,我知道它为什么不起作用,但我不知道如何重构我的代码以使其起作用。
【问题讨论】:
-
您是否真的在他的 CLIENT 上处理某些东西?这需要 30 秒?
-
"编写了需要 20-30 秒处理的 javascript" 可以在问题中包含
html、js吗? , 创建 stacksn-ps , jsfiddle jsfiddle.net 来演示?见stackoverflow.com/questions/27690326/… -
@ppumkin,是的,我是初学者,只是在尝试使用 javascript。该网页未托管,因此没有服务器。
-
这可能是问题所在。 JavaScript 永远不应该运行那么久!如果你在做一个 AJAX,你会显示一个加载的 GIF 或者一个简单的进度条,就像这样。为了使进度条非常准确,您需要将进程卸载到服务器,实现包含进度百分比的异步响应。使用 jQuery 也会帮助你分配。
-
@ppumkin 为什么不呢? Javascript 越来越多地用于功能强大的(网络或非网络)应用程序。例如,使用客户端执行一些较长的进程可以避免服务器过载并最大限度地减少网络过载。
标签: javascript html settimeout