[英]Shared worker do share variables
我一直在閱讀有關共享工作者上下文的一些文檔。 許多人指出共享工作程序不共享變量,這意味着它們不能互相使用變量。 但是,我的實驗反對這一點。
var port = new SharedWorker('worker.js').port;
port.start();
port.postMessage('Hello');
var ports = [];
onconnect = function(e){
var port = e.ports[0];
port.start();
ports.push(port);
console.log('Number of tabs: '+ports.length);
};
當我打開更多選項卡時, ports.length
保持增加,這意味着工作ports.length
之間共享ports
。
有人可以解釋一下嗎?
我相信SharedWorker會創建一個可以從多個父級訪問的單一工作程序,因此它不共享變量,因為它的單個SharedWorker進程共享父級
工作者具有無法共享變量的獨立javascript 上下文 。 ports
變量是SharedWorker的javascript API的一部分 ,而不是javascript 上下文 。
請注意,所有工作程序都可以通過消息傳遞變量。 DedicatedWorkers可以使用Transferrables 通過引用傳遞,但是SharedWorkers只能按值傳遞 ,因為它們使用異步序列化的緩沖區( ports
)進行實際的消息傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.