好吧,所以我试图制作一个使用背景同步的Angular 7 PWA。
我可以从Chromium的开发工具中触发同步事件,但是当我拔出以太网电缆并将其重新插入时,它不会触发。
我本来以为这是我的服务人员文件很奇怪,所以我添加了以下内容:https://stackoverflow.com/a/50414028/9978023,很奇怪的是它可以在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
}
service-worker.js
我在做什么错?当我重新连接到Internet时,为什么不触发同步事件?
答案 0 :(得分:1)
我知道发生了什么事。我必须手动告诉Service Worker在同步事件恢复在线时使用以下方法触发该事件:
<div class="table-responsive">
<table class="table table-bordered table-striped text-primary" id="get-warehouse-dt-listing-table">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Location</th>
<th>Level count</th>
<th>Created At</th>
<th>Updated At</th>
<th></th>
<th></th>
</tr>
</thead>
</table>
</div>
有了这个(我在POST不成功时运行),当我们重新联机时,SW将运行以触发同步事件。
P.S。这只会触发一次事件:
如果您在运行上面的代码后返回在线,则将触发,但是如果您先返回然后再返回,则不会再次触发。因此,您需要每次运行此代码,以使后台同步正常工作。