navigator.serviceWorker.register('/sw.js').then((reg)=>{
console.log(reg.installing, " installing");
console.log(reg.waiting, " waiting");
console.log(reg.active, " active")
reg.addEventListener('updatefound', function(){
console.log("update found", reg.installing);
})
})
Случай A) Допустим, пользователь впервые заходит на мой сайт. reg.installing
печатает worker
объект. reg.waiting
и reg.active
не определено, что понятно. updatefound
запускается немедленно, а reg.installing
- тот же работник, что и выше. Все хорошо.
Случай B) Я обновил SW-код и развернул его. при обновлении страницы reg.installing
печатает неопределенно. Вопрос 1) Почему не определено? при обновлении появляется новый работник сервиса, но reg.installing
не определено. в случае A, когда браузер зашел на сайт, должен был быть установлен новый работник сервиса, поэтому reg.installing
не был неопределенным.
Мое предположение: по моему мнению, в случае B) then promise block
произошло Быстрее, чем браузер, фактически сравнивал старый с новым, поэтому, когда это произошло, браузер вообще не имел reg.installing
. а в случае А, поскольку это был первый раз, браузеру не нужно было ничего сравнивать, и он был достаточно быстр, чтобы поместить worker
в reg.installing
.
Вопрос 2) делает мое предположение имеет смысл?