使用如下这种URL的方式创建的 worker 称为专用 Worker(Dedicate Worker)。
new worker("url");
而共享Workers(SharedWorker)的目的,是希望通过防止重复专用 Worker 来降低系统的资源使用。
有点类似于抽取共通方法的思想。
SharedWorker 接口代表一种特定类型的 worker,可以从几个浏览上下文中访问,例如几个窗口1、iframe 或其他 worker。它们实现一个不同于普通 worker 的接口,具有不同的全局作用域, SharedWorkerGlobalScope 。
通过 new SharedWorker() 方法来创建一个共享进程对象。
var myWorker = new SharedWorker("worker.js");
具体实例如下:
SharedWorker.js
onconnect = function (e) {
var port = e.ports[0];
/*
//如果已经用 onmessage 监听了 onmessage 事件,则会自动启动端口:
port.onmessage = function (e) {
var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
port.postMessage(workerResult);
};*/
port.addEventListener('message'