HTML5中的共享工作者和工作者之间有什么区别?

时间:2011-07-21 15:12:17

标签: javascript html5 web-worker

阅读此博文后:http://www.sitepoint.com/javascript-shared-web-workers-html5/

我不明白。 WorkerSharedWorker之间有什么区别?

5 个答案:

答案 0 :(得分:28)

非常基本的区别:只能从创建它的脚本访问Worker,来自同一域的任何脚本都可以访问SharedWorker

答案 1 :(得分:11)

SharedWorker似乎有更多的功能,然后是工人。

该功能包括:

  • 共享的全球范围。所有SharedWorker实例共享一个全局范围。

W3C规范:

WHATWG规格:

答案 2 :(得分:7)

共享工作者可以使用多个连接。它将消息发布到端口以允许各种脚本之间的通信。

另一方面,专用工作人员只是绑定到主连接,无法将消息发布到其他脚本(工作人员)。

答案 3 :(得分:7)

对于任何考虑使用SharedWorker的人 - Apple在2015年取消了对WebKit SharedWorker的支持。在他们的current roadmap中,没有重新实现的计划。目前正在为WebKit开发对Service Workers的支持,并提供类似的功能(see here for comparisons)。

您可以关注ServiceWorkers in WebKit here的开发(即Safari支持)。

答案 4 :(得分:0)

Shared worker允许所有首页上下文脚本,该脚本调用构造函数:new SharedWorker(“ path-to-shared-worker-file.js”)共享在后台上下文中运行的共享worker文件的同一实例(另一个线程)在后面运行javascript)。

例如,当网页#1调用该构造函数时,如果发现后面尚未加载共享工作程序,它将导致后台上下文下载文件并将其加载,然后在随后的网页#2中调用相同的构造函数(相同的文件路径),它发现有一个现有的共享工作程序正在运行,它将使用相同的共享工作程序。调用worker.port.start()函数时,它将导致调用共享工作程序文件的onconnect事件处理程序来注册调用方,并获取与客户端端口进行通信的句柄(例如,用于postMessage返回)。

但是,工作程序,上面的每个网页都会在后台为每个首页加载一个工作程序文件,而不是共享同一worker.js实例。