Javascript 是否可以使用web workers优化两个脚本?

Javascript 是否可以使用web workers优化两个脚本?,javascript,web-worker,Javascript,Web Worker,我正在运行两个支持依赖关系的库。我的意思是,他们的处决顺序无关紧要。它们将相互检测并以任何顺序运行 script1.js script2.js 使用WebWorkers并行运行这些脚本()会对我有好处吗?() 我的意思是,它们会比我连续运行更快吗 这两个脚本都已在客户端上可用(我不必下载它们)。我的打赌,是 这就像问 1人完成一项任务需要6天时间。两个人要花多少时间? :-) 大多数理想的WebWorkers用例不,javascript在web浏览器中的单个线程上执行。所以,除非它们不是用户

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

script1.js

script2.js
使用WebWorkers并行运行这些脚本()会对我有好处吗?()

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


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

我的打赌,

这就像问

1人完成一项任务需要6天时间。两个人要花多少时间?

:-)


大多数理想的WebWorkers用例

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

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

只需在
上使用
async=true
属性即可。像这样:

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

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


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

据我所知,web worker为您提供了操作系统级的执行线程。因此,性能改进可能取决于客户端操作系统线程实现中固有的权衡


在任何情况下,您都应该看到加载时间的改进,除非操作系统有一个糟糕的线程实现。

我认为web workers在这里不会有帮助。文档中说,通信被序列化为JSON格式,因此,除非您进行任何并行处理,否则web workers不会有多大用处。web workers旨在防止长时间运行的脚本被阻塞,但您没有提到您的脚本是否会长时间运行。也许您想要在脚本元素上使用HTML5?@apsillers-async用于网络请求…即。所以你不用等待下载时间…我已经下载了它们…我正在写.innerHTML来动态执行,我已经有了可用的脚本文本。等等,你关心的是加载时间还是执行时间?你问“
…它们加载得更快吗…?
”,但你刚才在评论中说你不在乎加载时间。如果你不需要下载它们,为什么还要在乎加载?这是不正确的。Web workers提供了额外的执行线程。编辑:我站着更正,见下文。但是对DOM的任何访问都将在单个线程上序列化。所以,它是正确的:-)async属性指的是下载(网络延迟)而不是解释(脚本处理延迟)。是的,这是正确的,这就是我用大写字母写LOAD的原因:-)两个人一起工作不是有很多讨论开销吗?:-)@Bergi,一个很好的评论,你可能想要。不,网络工作者不一定有他们自己的线程。实现这一点是开放的。看看