我在http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html上读过关于Web Workers的文章,我想我理解他们的目的,但我想知道网络工作者的主要目的之一,即“允许执行长任务而不屈服于保持页面响应。“没有网络工作者可以实现吗? 就像注册Callbaks一样,也可以执行长任务,只有在准备就绪时才会中断,不会阻塞,是不是一样?
答案 0 :(得分:6)
回调允许您管理并发。那就是处理任务。并非总是很容易。
网络工作者不仅允许你以更简单的方式进行并发,而且还让你拥有并行性,这是真正并行运行的任务:它们不一定会互相阻塞而且他们不会阻止用户界面。
为了在Web worker之前在浏览器中运行基于javascript的长任务,您必须对其进行微观管理以将其剪切为小部分,以便UI能够保持响应。当然,有多个长期运行的任务更复杂。
答案 1 :(得分:0)
我们知道网络浏览器在过去几年中增长了很多,这主要是因为在其引擎上做了大量工作,例如 V8(谷歌)、Chakra(微软)。到目前为止,JavaScript 在单线程中运行。单线程架构的问题在于它会阻塞代码,并且在运行复杂脚本的情况下 UI 变得无响应。有多种方法可以解决此问题:
Web Workers 通过在 JavaScript 中提供多线程功能来解决这个问题。