MDN sugeruje, że należy wykonać następujące czynności, aby utworzyć i zapełnić pamięć podręczną Pracownik serwisu:Co robi event.waitUntil zrobić w serwisie service worker i dlaczego jest potrzebny?
this.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
'/sw-test/',
'/sw-test/index.html',
... etc ...
]);
})
);
});
Nie rozumiem tego kodu. Metoda waitUntil
dokumentuje też, i wydaje się, że powyższy kod jest jedynym celem istnienia jest to w tej chwili:
metoda ExtendableEvent.waitUntil() przedłuża żywotność przypadku . Po wywołaniu zdarzenia EventHandler powiązanego ze zdarzeniem instalacyjnym opóźnia traktowanie instalującego pracownika jako zainstalowanego do momentu pomyślnego zakończenia obietnicy. Jest to przede wszystkim używane w celu zapewnienia, że pracownik serwisowy nie jest uważany za zainstalowany, dopóki nie zostanie wypełniony cały rdzeń buforowany.
Co ja nie rozumiem:
- Jak
waitUntil
ogólnie wpływa przepływ kodu? Czy powstrzymuje wydarzenie od propagacji, dopóki nie ustąpi obietnica? - Dlaczego jest to potrzebne w kontekście otwierania pamięci podręcznej pracownika?
Zadaję to pytanie, ponieważ mam problem z powyższym kodem i chciałbym go zrozumieć.
Nadal nie rozumiem. Jeśli usunę plik 'event.waitUntil', co się stanie? Próbowałem usunąć 'event.waitUntil', nadal działa dobrze. Pamięć podręczna miała buforowany zasób i stronę można było odwiedzić w trybie offline. Jeśli potrzebujesz Demo, mogę Ci je przesłać. – youngwind
Jeśli go nie nazwiesz, pracownik serwisu może zostać zatrzymany w dowolnym momencie. Nie oznacza to, że zostanie zatrzymany, więc w niektórych przypadkach może działać, aw niektórych przypadkach (w zależności od czasu) nie zadziała. – Marco
Tak, znalazłem to, co powiedziałeś w oficjalnym dokumencie. Co chcę wiedzieć to: 1. Jak wywołać przypadki "niedziałające"? 2. Dlaczego pracownik serwisowy może zostać zatrzymany, jeśli go nie nazywam? Kluczową kwestią jest: dlaczego, nie co. Nie mogę znaleźć odpowiedzi w dokumencie. – youngwind