WebWorker 有时仅在 android 上加载

WebWorker is only loaded sometimes on android

在我们的 Ionic 应用程序中,我们有一个 web worker 来做一些计算。

以前还可以,现在突然出问题了。我们的应用程序发生了相当多的变化,但我删除了大部分代码以查明错误,但我并没有发现太多。

发生的事情是一切似乎都工作正常,但网络工作者中的代码从未执行过。也没有抛出错误。当我在 web worker 不工作时记录它,Chrome 记录 > Worker {},如果它工作,它记录 > Worker。所以看起来网络工作者由于某种原因没有被初始化。

应用内代码:

const libWorker = new Worker('./assets/workers/lib.js')
console.log(libWorker) // Logs either "Worker {}" or "Worker"
libWorker.onmessage = event => {
    console.log('WORKER CALLBACK')
}
libWorker.postMessage({ ... })

网络工作者中的代码:

console.log("worker started!")

问题是:

几乎每次这段代码运行时,worker started! 都不会被记录下来,似乎 web worker 没有被初始化,但没有错误。

这是我所知道的:

真正难以调试的是,如果网络工作者未初始化,则永远不会有任何错误消息。只有当它被初始化(大约 5% 的次数)并且网络工作者代码包含语法错误时,它才会抛出错误。所以看起来 new Worker() 由于某种原因实际上大部分时间都没有被调用。

周末神奇地解决了这个问题。

我认为问题在于 Web Worker 代码以某种方式被缓存,因此没有反映我对应用所做的更改。