Angular 后台同步不会自动触发
好的,我试着制作一个角度7PWA,它使用背景同步 我可以在Chromium中的开发工具中触发同步事件,但当我卸下以太网电缆并将其重新插入时,它不会触发 我原本以为是我的服务人员文件有点奇怪,所以我添加了这个:,奇怪的是它可以在Firefox中工作,但不能在Chromium中工作。因此,使用这个,我可以触发同步事件要调用的相同函数。但这不是一个很好的解决方案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
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不成功时运行),当我们重新联机时,软件将运行并触发同步事件
注意:这只会触发事件一次:
如果您在运行上面的代码后重新联机,它将触发,但如果您在运行完之后又重新开机,它将不会再次触发。因此,每当您希望后台同步工作时,都需要运行此代码