有什么方法可以链接同步请求和下一个后续获取请求,我们调用更新和后续获取调用?目前,我看到正在调用 fetch 调用“jsonGetMyData”并将旧数据返回给我,但是如果我在调试器中暂停此调用一秒钟,它会为我提供更新的数据。因此,在 fetch 调用之前似乎没有发生 service worker 更新,如果是这种情况,我们如何控制它以便首先发生 service worker 更新,然后只会调用 fetch ?
请指教。
下面是调用部分。
if ('serviceWorker' in navigator && 'SyncManager' in window) {
navigator.serviceWorker.ready
.then(function(sw) {
writeData('myStore', dataObject)
.then(function() {
return sw.sync.register('case0-sync');
})
.then(function(){
debugger;
this.jsonGetMyData(this.get("dataId"));
})
.catch(function(err) {
console.log(err);
});
});
}
下面是示例服务工作者代码。
self.addEventListener("sync", function(event) {
console.log("Background Syncing started...");
if(event.tag === 'case0-sync'){
//my update post call goes here
}else if(event.tag === 'case1-sync'){
}else if(event.tag === 'case2-sync'){
}else if(event.tag === 'case3-sync'){
}else if(event.tag === 'case4-sync'){
}
});
self.addEventListener('fetch', function (event) {
if (event.request.url.indexOf('jsonGetMyData') > -1
event.respondWith(
fetch(event.request).then(function(resp){
return resp;
}).catch(function(err){
})
);
}
});