[英]How can I run watchposition on background using service worker Angular 6
[英]How to run function in background with service worker
我正在构建一个javascript Web应用程序。 在这里,我想将图片和其他数据上传到服务器。 这一切正常,但是我也想离线使用该应用程序。 因此,我实现了indexedDB,以离线存储数据。 此外,我做了一个同步功能,它将每5秒钟执行一次(setIntervall()...),以便在再次连接互联网时将数据同步到服务器。
问题是,此同步功能仅在打开应用程序时有效。 因此,我研究了一种解决问题的方法,然后想到了“后台同步”的“服务人员”。
问题是我不知道如何实现它。
这是我目前拥有的(整个应用程序都在MVC概念中编程):
if (event.tag == 'myFirstSync') {
event.waitUntil(sync());
}
});
您可以在sw.js
文件中的'sync'事件处理程序中实现后台同步:
self.addEventListener('sync', function(event) {
if (event.tag == 'myFirstSync') {
event.waitUntil(() => {
// Put your sync code here.
});
}
});
注册服务工作者后的某个时候,您需要触发同步:
// Register your service worker:
navigator.serviceWorker.register('/sw.js');
// Then later, request a one-off sync:
navigator.serviceWorker.ready.then(function(swRegistration) {
return swRegistration.sync.register('myFirstSync');
});
一次触发同步后,如果同步失败,则同步应继续自行重试(即使未在浏览器中打开应用程序)。
如果失败,则将安排另一个同步重试。 重试同步还等待连接,并采用指数补偿。
有关更多详细信息,请参见https://developers.google.com/web/updates/2015/12/background-sync 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.