是否可以在不使用postMessage方法的情况下从主线程获取counter
变量(ServiceWorkerGlobalScope(?
服务工作者.js:
let counter = 42;
self.addEventListener("message", function (event: any) {
let client = event.source;
client.postMessage(counter);
}
不可能直接从不同的全局范围引用变量。
您可以使用postMessage()
在WindowGlobalScope
和ServiceWorkerGlobalScope
之间发送值,如您的示例所示。
您还可以将变量序列化为可从两个全局范围(如 IndexedDB 或缓存存储 API(访问的共享存储。idb-keyval
是一个易于使用的库,可在两个范围内工作。