我正在尝试编写一些执行相当繁重的计算的脚本。因此,我想通过更新网站上的内容(例如,完成计算的一小部分)来通知用户进度。是否可以用JavaScript实现? JavaScript是否允许在调用函数仍在运行时更新内容?或者也许无论在什么情况下我都可以在调用函数完成后更新内容?
答案 0 :(得分:3)
看一看工人:http://www.html5rocks.com/en/tutorials/workers/basics/
它用于繁重的计算(在javascript规模的c),并附带一些函数来更新用户有关计算的状态,它基本上是javascript中的多线程。
答案 1 :(得分:2)
答案 2 :(得分:0)
当你的函数正在运行时,不会发生屏幕更新:UI线程必须像其他任何JS线程一样争取它的时间。你可以通过安排回调来做到这一点:
function f() {
a();
// update now
b();
}
可以改写为
function f() {
a();
setTimeout(function() {
b();
}, 0);
}
这种方式有效,在a()
之后,setTimeout
将安排其余的功能,然后退出。这是UI线程现在可以(并且将会)获取控制权的地方;完成后,计划的剩余部分将执行。
如果您有适合(非常严重的)WebWorker限制的事情,您可以使用它们;然而,他们无法触摸UI,因此重绘是没有意义的(除非你像Antoine所说,并根据WebWorker计算的参数安排更新功能)。
答案 3 :(得分:0)
我的几分钱:
最简单的解决方法是最简单的方法 显示一个繁忙的动画。
尝试将重量级计算代码分解为多个部分&更新 进度条。
或建议使用 Antoine ,尝试使用Web Workers。
答案 4 :(得分:-1)