В нашем приложении Ionic у нас есть веб-работник, который делает некоторые вычисления.
Раньше это работало нормально, но теперь внезапно возникают некоторые проблемы.В нашем приложении было довольно много изменений, но я удалил большую часть кода, чтобы точно определить ошибку, но я ничего не выяснил.
В результате получается, что все работает нормально, но кодвнутри веб-работника никогда не выполняется.Там также не выдается ошибка.Когда я регистрирую веб-работника, когда он не работает, 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!
не регистрируется, и кажется, что веб-работник не инициализирован, но ошибки нет.
Вот что я знаю:
- Код иногда работает на Android (примерно в 5% случаев или меньше), поэтому импорт и использование правильные.
- Я удалил весь код внутри веб-разработчика, за исключением
console.log("worker started!");
- Скорее всего, это не проблема синхронизации, я попытался заключить код в несколько
setTimeout
s, чтобы сделатьУбедитесь, что все готово и достаточно времени для загрузки. - Тот же код работает без сбоев, 100% времени, на iOS и в браузере (Chrome).
- Нет ошибоквошли в любом случае (я подключил прослушиватель событий для прослушивания ошибок)
Что действительно затрудняет отладку, так это то, что никогда не появляется никакого сообщения об ошибке, если веб-работник не инициализирован.Только когда он инициализируется (примерно в 5% случаев) и код веб-работника содержит синтаксическую ошибку, он выдает ошибку.Похоже, что по некоторым причинам new Worker()
фактически не вызывается большую часть времени.