Отправить сообщение сервисному работнику, чтобы пропустить ожидание - PullRequest
0 голосов
/ 24 октября 2019

Как отправить сообщение работнику службы, чтобы пропустить ожидание? Работник службы определяется следующим обработчиком

self.addEventListener('message', (event) => {
  if (event.data && event.data.type === 'SKIP_WAITING') {
    self.skipWaiting();
  }
});

Спасибо, Луис

1 Ответ

0 голосов
/ 24 октября 2019

Вот пример того, как я делаю это в одном из моих проектов.

navigator.serviceWorker
  .register(swUrl)
  .then(registration => {
    this.registration = registration;
    config.onRegistration();

    registration.onupdatefound = () => {
      const installingWorker = registration.installing;
      if (installingWorker == null) {
        return;
      }
      config.onUpdateFound();
      installingWorker.onstatechange = () => {
        if (installingWorker.state === 'installed') {
          if (navigator.serviceWorker.controller) {
            registration.waiting.postMessage('skipWaiting');
            config.onUpdateInstalled();
          }
        } else if (installingWorker.state === 'activated') {
          config.onActivated();
        }
      };
    };
  })
...