2016-03-21 49 views
1

Şu anda Service Worker'da bir hizmet mantığına sahibim. Burada belirli bir event.respondWith() öğesi bittiyse, Service Worker içinde kontrol etmem gerekir. önbelleği silmem gerekiyor.Onu tanımak için herhangi bir yol var.Ben o olayı kontrol ettim.with()() veya bir geri çağrı yok.Event.respondithSonum bittiğinde (Event.respondithwith() için geri çağırma

+1

Soruyu açıklar mısınız? – Marco

+0

Temelde event.respondWith() için bir geriçağırım işlevinin olup olmadığını bilmek istiyorum, bir hizmetin tamamlandığını serviceworker'dan nasıl öğrenebilirim? – biswpo

cevap

2

Önbellek temizlemeniz, kullanılan Response'dan bağımsızsa Promise event.respondWith()'a geçtiğinde, event.respondWith() olayının tamamlanıp tamamlanmadığına dair endişelenmeden fetch olay işleyicisi içinde eşzamansız bir şekilde başlatabilirsiniz (örneğin), örneğin, her defasında bir önbelleği temizlemek istiyorsanızboyutta N girişleri geçmiş.

önbellek temizleme Promise yerine getirmek için kullanılmakta olduğu Response özgüyse

, o zaman geçerli Response ile yerine getirerek Zinciri sonlandırmak emin olarak Promise zincirine mantığı eklemek istiyorum gidiyoruz . fetch olay işleyicisi üzerinde kontrol sahibi olduğunuzu varsayabilirim ve bunu yapabilir. yaptığın her Response kontrollü sayfaya geçirilen geciktirecek beri, Sen Promise zinciri içinde çok fazla yapmak istemiyorum

self.addEventListner('fetch', event => { 
    const p = promiseThatFulfillsWithResponse(); // Your logic goes here. 

    event.respondWith(p.then(response => { 
    return caches.open('my-cache-name') 
     .then(cache => cache.delete(event.request)) // Or whatever you want to delete. 
     .then(() => response); // Return response at the end of the chain! 
    }); 
}); 

: İşte bir genel (denenmemiş) bir yaklaşımdır.

+0

Ayrıca p.then (_ => {deleteTheCache();}) 'yaptıktan sonra const p' ve sonra sadece' event.respondWith (p) '. – mjs