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