是否可以在不使用 postMessage 方法的情况下从主线程获取 counter
变量 (ServiceWorkerGlobalScope)?
service-worker.js:
let counter = 42;
self.addEventListener("message", function (event: any) {
let client = event.source;
client.postMessage(counter);
}
最佳答案
不可能直接引用来自不同全局范围的变量。
您可以使用 postMessage()
在 WindowGlobalScope
和 ServiceWorkerGlobalScope
之间发送值,如示例中所示。
您还可以将变量序列化到可从两个全局范围访问的共享存储,例如 IndexedDB 或缓存存储 API。 idb-keyval
是一个易于使用的库,适用于两个范围。
关于javascript - 是否可以直接从服务 worker (ServiceWorkerGlobalScope)读取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62642404/