我最近听说定义多线程JavaScript的API的Web Workers规范。但是,在处理客户端脚本很长一段时间(以及事件驱动的范例)之后,我并没有真正看到使用多线程的一点。我们真的需要多线程JavaScript吗?
我可以看到JavaScript引擎和浏览器渲染引擎如何从多线程中受益,但我真的没有看到将这种功能交给应用程序员很多好处。
我最近听说定义多线程JavaScript的API的Web Workers规范。但是,在处理客户端脚本很长一段时间(以及事件驱动的范例)之后,我并没有真正看到使用多线程的一点。我们真的需要多线程JavaScript吗?
我可以看到JavaScript引擎和浏览器渲染引擎如何从多线程中受益,但我真的没有看到将这种功能交给应用程序员很多好处。
维基百科的文章很好地回答了你的问题。
将权力授予我们的开发人员,以便我们可以专门将任何会对用户造成干扰的任务卸载到网络工作者。浏览器不知道哪些脚本是您的自定义界面正常工作所必需的,但您确实需要。
如果您有一个脚本可以阻止网页呈现10秒,但对网站无效,您可以将其卸载到网络工作者。这样做可以让用户与页面交互,而不是强迫他们等待该脚本执行10秒钟。在某种程度上,它就像AJAX一样,可以在界面加载后注入事物,以免延迟用户的交互。
这应该至少是一个社区wiki。 – Amadan 2011-05-03 23:46:08
我同意你的看法,我认为现在并不需要它,因为一切似乎都是事件驱动的。但如果范式发生变化,我可以看到它的需要。 – MattK311 2011-05-03 23:53:56
你可以沙箱中的一块沉重的代码,以保持'主'窗口响应。在需要重新绘制屏幕或其某些部分之前,需要进行大量计算的任何操作都可以在单独的线程中运行。你永远不需要它 - 但你不需要蛋糕,无论是... – kennebec 2011-05-04 00:00:49