Как определить, готов ли обслуживающий работник? - PullRequest
0 голосов
/ 05 ноября 2018

В соответствии со спецификацией , свойство ServiceWorker.waiting возвращает ссылку на сервисного работника, который установлен и ожидает активации.

Это хорошо. Но как мне узнать, когда ожидающий работник перешел в новое состояние?

У работника службы, возвращенного ServiceWorker.waiting, похоже, нет событий, необходимых для уведомления об изменении состояния:

if (registration.waiting) {

  registration.waiting.postMessage('skip-waiting');

  // This is failing because ready is undefined.
  registration.waiting.ready.then(function () {

    console.log('new service worker - ready');
 }
}

1 Ответ

0 голосов
/ 05 ноября 2018

На момент написания, registration.waiting.onstatechange является нулевым в Chrome. Тем не менее, следующие работы:

if (registration.waiting) {

  const waiting = registration.waiting;

  waiting.postMessage('skip-waiting');

  waiting.addEventListener('statechange', function (e) {

    if(waiting.state === 'activated') {
      console.log('new service worker - ready');
    }
 }
}
...