Javascript 向服务工作人员发送消息以跳过等待

Javascript 向服务工作人员发送消息以跳过等待,javascript,service-worker,Javascript,Service Worker,如何向服务人员发送消息以跳过等待?服务工作者是使用以下处理程序定义的 self.addEventListener('message', (event) => { if (event.data && event.data.type === 'SKIP_WAITING') { self.skipWaiting(); } }); 谢谢, 路易斯下面是一个关于我在一个项目中如何做到这一点的例子 navigator.serviceWorker .register

如何向服务人员发送消息以跳过等待?服务工作者是使用以下处理程序定义的

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

下面是一个关于我在一个项目中如何做到这一点的例子

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();
        }
      };
    };
  })

非常感谢。问题:你是从哪里得到配置的?此处使用config.onRegistration()和此处使用config.onUpdateInstalled();我正在使用CreateReact应用程序,虽然消息是按照Joel的代码发送的,但服务人员仍处于等待状态。这是一种有趣的方法。我没有想过,一旦安装了新的服务人员,可能会进行一系列的验证检查,以确定激活是否安全。您需要在UI代码中捕获来自新服务人员的消息,以便首先启动诊断。一旦事情过去,您就可以通过向服务人员发送消息来触发激活。然而,我打赌你不会走得太远,因为客户端测试将依赖于在客户端加载新资产(HTML、JS、CSS等),所以测试很可能不会通过。