Angular 后台同步不会自动触发

Angular 后台同步不会自动触发,angular,service-worker,progressive-web-apps,background-sync,Angular,Service Worker,Progressive Web Apps,Background Sync,好的,我试着制作一个角度7PWA,它使用背景同步 我可以在Chromium中的开发工具中触发同步事件,但当我卸下以太网电缆并将其重新插入时,它不会触发 我原本以为是我的服务人员文件有点奇怪,所以我添加了这个:,奇怪的是它可以在Firefox中工作,但不能在Chromium中工作。因此,使用这个,我可以触发同步事件要调用的相同函数。但这不是一个很好的解决方案 self.addEventListener('sync', function (event) { console.log('I hear

好的,我试着制作一个角度7PWA,它使用背景同步

我可以在Chromium中的开发工具中触发同步事件,但当我卸下以太网电缆并将其重新插入时,它不会触发

我原本以为是我的服务人员文件有点奇怪,所以我添加了这个:,奇怪的是它可以在Firefox中工作,但不能在Chromium中工作。因此,使用这个,我可以触发同步事件要调用的相同函数。但这不是一个很好的解决方案

self.addEventListener('sync', function (event) {
  console.log('I heard a sync event. Sending Posts to server', event);
  event.waitUntil(sendPostsToServer()
    .then(res => {
      console.log(res);
    })
    .catch(e=>{console.log(e)}));
});


async function sendPostsToServer() {
  // POST to server
}
服务工作者.js


我做错了什么?为什么重新连接到Internet时同步事件没有触发?

我知道发生了什么。我必须手动告诉服务人员在其重新联机时触发同步事件,并显示:

navigator.serviceWorker.ready.then(function (swRegistration) {
     return swRegistration.sync.register('myFirstSync');
});
有了这个(我在POST不成功时运行),当我们重新联机时,软件将运行并触发同步事件

注意:这只会触发事件一次:


如果您在运行上面的代码后重新联机,它将触发,但如果您在运行完之后又重新开机,它将不会再次触发。因此,每当您希望后台同步工作时,都需要运行这段代码。

我知道发生了什么。我必须手动告诉服务人员在其重新联机时触发同步事件,并显示:

navigator.serviceWorker.ready.then(function (swRegistration) {
     return swRegistration.sync.register('myFirstSync');
});
有了这个(我在POST不成功时运行),当我们重新联机时,软件将运行并触发同步事件

注意:这只会触发事件一次:

如果您在运行上面的代码后重新联机,它将触发,但如果您在运行完之后又重新开机,它将不会再次触发。因此,每当您希望后台同步工作时,都需要运行此代码