2

我正在运行两个具有依赖关系的库。我的意思是他们的执行顺序无关紧要。它们将相互检测并以任何顺序运行。

script1.js

script2.js

使用网络工作者并行(并行处理)运行这些脚本是否会受益?MDN 文档

我的意思是它们会比我连续运行它们运行得更快吗?

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

4

4 回答 4

6

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

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

于 2013-02-12T20:21:42.633 回答
2

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

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

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

<script async="async">....</script>
于 2013-02-12T20:20:40.667 回答
1

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

无论如何,除非操作系统具有糟糕的线程实现,否则您应该会看到加载时间有所改善。

于 2013-02-12T20:23:27.673 回答
0

我敢打赌,的。

就像问

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

:-)

WebWorkers 的最理想用例

于 2013-02-12T20:20:04.540 回答