我正在创建两个共享同一SharedWorker的页面,并且每个页面都有一个add
按钮,用于postMessage
到SharedWorker,每个页面都有来自SharedWorker的计数。
如何通过单击另一个页面的按钮来刷新页面?
这是我的工作的简单演示,两个页面都在public.js
上运行:
public.js:
function refresh(a) {
// <p id="count"></p>
if (count) {
count.innerText = a || 1
}
}
var myWorker = new SharedWorker("worker.js");
myWorker.port.onmessage = function(e) {
refresh(e.data)
}
function add() {
myWorker.port.postMessage('add');
}
function getVal() {
myWorker.port.postMessage('get')
}
getVal()
worker.js:
var a = 1
onconnect = function(e) {
var port = e.ports[0];
port.onmessage = function(e) {
switch (e.data) {
case 'add': {
a += 1
port.postMessage(a)
break
}
case 'get': {
port.postMessage(a)
break
}
}
}
}
当我运行这些页面并单击一个按钮时,另一页面的计数仍然是旧的,我希望它可以自动刷新,因为两个页面都已听过myWorker.port.onmessage
。