簡體   English   中英

共享工作者共享變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM