Was bedeutet Ereignis.waitUntil tun, in service-Mitarbeiter und warum ist Sie nötig?
MDN schlägt vor, dass Sie die folgenden Schritte zum erstellen und Auffüllen Dienst-Arbeiter-cache:
this.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
'/sw-test/',
'/sw-test/index.html',
... etc ...
]);
})
);
});
Verstehe ich nicht, dass code. Die waitUntil
Methode dokumentiert ist auch, und es scheint, der code oben ist der einzige Zweck Ihrer Existenz im moment:
Den ExtendableEvent.waitUntil () - Methode verlängert die Lebensdauer der
event. Wenn man in einem Event-Handler im Zusammenhang mit der install-event,
es verzögert die Behandlung der Installation der Arbeitnehmer installiert, bis die übergebenen
Versprechen erfolgreich aufgelöst wird. Dies wird vor allem verwendet, um sicherzustellen, dass eine
service-Mitarbeiter wird nicht als installiert, bis alle Kern
caches es hängt davon ab, aufgefüllt werden.
Was ich nicht verstehe ist:
- Wie funktioniert
waitUntil
im Allgemeinen beeinflussen, code flow? Hört es auf Veranstaltung von der Vermehrung bis es Versprechen löst? - Warum ist es erforderlich, im Rahmen der Eröffnung Arbeiter-cache?
Ich Stelle diese Frage, weil ich Probleme mit dem code oben, und ich möchte um es zu verstehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie die Beschreibung sagt,
the ExtendableEvent.waitUntil() method extends the lifetime of the event
. Wenn Sie nennen Sie es nicht innerhalb einer Methode, der service-Mitarbeiter konnte jederzeit abgebrochen werden (siehe die Spezifikation).So, die
waitUntil
Methode wird verwendet, um dem browser mitzuteilen, die nicht zur Kündigung des Arbeitnehmers bis zu dem Versprechen übergebenwaitUntil
ist entweder aufgelöst oder abgelehnt.Über deine speziellen Fragen:
install
und dieactivate
Veranstaltungen, verzögert es den Zustand wechseln des Arbeitnehmersinstalled
undactivated
(siehe Spezifikation der waitUntil Methode, insbesondere den letzten Teil des Absatzes).event.waitUntil
, was wird passieren? Ich habe versucht zu entfernen, dieevent.waitUntil
es noch geklappt. Cache-Speicher, der hatte zwischengespeicherte Ressource und die Seite kann besucht werden offline. Wenn Sie brauchen, Demo, kann ich ihn dir schicken.event.waitUntil
. Mitevent.waitUntil
, Wenn eine Ressource incache.addAll
Abruf fehlgeschlagen, die service-Mitarbeiter werden könnte, zu stoppen. Ohneevent.waitUntil
, der service-Mitarbeiter wird weiterhin ausgeführt, obwohl einigecache.addAll
Abruf fehlgeschlagen. Ich hatte es versucht und bestätigt die Theorie. Für weitere Informationen: developers.google.com/web/fundamentals/primers/service-workers/...event.waitUntil
den browser beendet werden kann an jedem Punkt, selbst wenn die installation noch nicht beendet (egal ob erfolgreich oder fehlgeschlagen). Es läuft ohneevent.waitUntil
in Ihrem Beispiel, aber es ist immer noch eine timing-Sache (Sie können nicht sicher sein, dass das gleiche Verhalten mit anderen Menschen passieren, die mit verschiedenen Maschinen, oder Sie mit einer zukünftigen version des Browsers).