后台同步不会自动触发
Background Sync not triggering automatically
好的,所以我正在尝试制作一个使用后台同步的 Angular 7 PWA。
我可以在 Chromium 的开发工具中触发同步事件,但是当我拔下以太网电缆并重新插入时它不会触发。
我最初认为是我的 service worker 文件很奇怪所以我添加了这个: ,奇怪的是它在 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
}
服务-worker.js
我做错了什么?为什么当我重新连接到 Internet 时同步事件没有触发?
我明白是怎么回事了。我不得不手动告诉 Service Worker 在它重新联机时触发同步事件:
navigator.serviceWorker.ready.then(function (swRegistration) {
return swRegistration.sync.register('myFirstSync');
});
有了这个(我 运行 当 POST 不成功时)当我们重新上线时,SW 将 运行 触发同步事件。
P.S。这只会触发一次事件:
如果您在 运行 上面的代码之后重新上线,它将触发,但如果您关闭并在之后重新打开,它将不会再次触发。所以这段代码需要 运行 每次 你想让后台同步工作。
好的,所以我正在尝试制作一个使用后台同步的 Angular 7 PWA。
我可以在 Chromium 的开发工具中触发同步事件,但是当我拔下以太网电缆并重新插入时它不会触发。
我最初认为是我的 service worker 文件很奇怪所以我添加了这个: ,奇怪的是它在 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
}
服务-worker.js
我做错了什么?为什么当我重新连接到 Internet 时同步事件没有触发?
我明白是怎么回事了。我不得不手动告诉 Service Worker 在它重新联机时触发同步事件:
navigator.serviceWorker.ready.then(function (swRegistration) {
return swRegistration.sync.register('myFirstSync');
});
有了这个(我 运行 当 POST 不成功时)当我们重新上线时,SW 将 运行 触发同步事件。
P.S。这只会触发一次事件:
如果您在 运行 上面的代码之后重新上线,它将触发,但如果您关闭并在之后重新打开,它将不会再次触发。所以这段代码需要 运行 每次 你想让后台同步工作。