是否可以使用Web worker优化两个脚本?

时间:2013-02-12 20:14:12

标签: javascript web-worker

我正在运行两个依赖感知的库。我的意思是他们的执行顺序无关紧要。他们会相互发现并以任何顺序运行。

script1.js

script2.js

使用网络工作程序并行运行这些脚本(parallel processing)会使我受益吗? (MDN Doc

我的意思是,他们的运行速度会比我连续运行它们的速度快吗?

这两个脚本已经在客户端上可用(我不必下载它们)。

4 个答案:

答案 0 :(得分:6)

如果一个或两个脚本纯粹是功能性的,这意味着它不需要访问DOM或任何全局Javascript对象,那么您可以从使用Web Workers中受益。

如果不是这样,那么Web Workers对你没有好处。当JS通过Web worker运行时,它只能将消息传递回主DOM线程并接收它们。

答案 1 :(得分:2)

不,javascript在Web浏览器中的单个线程上执行。所以你不能在并行运行它们,除非它们不是用户交互式的(不与DOM交互)。

但是,您可以异步加载脚本以加速初始化。

只需使用async=true上的<script>属性即可。像这样:

<script async="async">....</script>

答案 2 :(得分:1)

据我了解,网络工作者为您提供了操作系统级别的执行线程。因此,性能改进可能取决于客户端操作系统线程实现中固有的权衡。

在任何情况下,除非操作系统具有可怕的线程实现,否则您应该看到加载时间有所改善。

答案 3 :(得分:0)

我打赌,

就像问

1 man takes 6 days to do a task. How much time will 2 men take?

:-)

WebWorkers的大多数理想用例