0

有什么方法可以链接同步请求和下一个后续获取请求,我们调用更新和后续获取调用?目前,我看到正在调用 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){
        })
        );
  }
});
4

0 回答 0