Web Worker的优势以及它们之前是如何实现的?

时间:2013-01-17 14:02:45

标签: javascript html5 web-worker

我在http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html上读过关于Web Workers的文章,我想我理解他们的目的,但我想知道网络工作者的主要目的之一,即“允许执行长任务而不屈服于保持页面响应。“没有网络工作者可以实现吗? 就像注册Callbaks一样,也可以执行长任务,只有在准备就绪时才会中断,不会阻塞,是不是一样?

2 个答案:

答案 0 :(得分:6)

回调允许您管理并发。那就是处理任务。并非总是很容易。

网络工作者不仅允许你以更简单的方式进行并发,而且还让你拥有并行性,这是真正并行运行的任务:它们不一定会互相阻塞而且他们不会阻止用户界面。

为了在Web worker之前在浏览器中运行基于javascript的长任务,您必须对其进行微观管理以将其剪切为小部分,以便UI能够保持响应。当然,有多个长期运行的任务更复杂。

答案 1 :(得分:0)

我们知道网络浏览器在过去几年中增长了很多,这主要是因为在其引擎上做了大量工作,例如 V8(谷歌)、Chakra(微软)。到目前为止,JavaScript 在单线程中运行。单线程架构的问题在于它会阻塞代码,并且在运行复杂脚本的情况下 UI 变得无响应。有多种方法可以解决此问题:

  1. 将工作卸载到服务器,但为了使应用程序更快,胖客户端是首选
  2. 使用异步调用,但许多复杂的异步调用和承诺生态系统可以 进入回调地狱
  3. 利用多线程。有趣!

Web Workers 通过在 JavaScript 中提供多线程功能来解决这个问题。