2016-05-06 5 views
0

Bitte ich verwenden setInterval wollen, die alle 5 Sekunden in meinem Servicemitarbeiter Javascript-Datei eine Benachrichtigung zeigt und es funktioniert auf den ersten Ordnung, aber nach und nach nach ca. 20 Sekunden stoppt esVerwendung setInterval in Service Arbeiter

Hier arbeiten ist der Teil wo Timer in der Servicemitarbeiter Java-Skript initialisiert

self.addEventListener('activate', function(event) { 
    setInterval(function() 
    { 

    self.registration.showNotification("title", { 
     body: "test" 
    }); 


    },5000); 

}); 
+0

Warum erstellen Sie jedes Mal, wenn Ihr Element aktiviert wird, ein brandneues 'setInterval'? Ist es das was du willst? – RJM

+0

Danke für deine Antwort. Ich mache Online-Task-Zeit-Manager, so möchte ich JavaScript-Timer im Hintergrund laufen lassen, auch wenn der Browser selbst geschlossen ist, um die Benachrichtigung zu zeigen, dass die spezifische Aufgabe endete –

+0

Ich glaube nicht, dass Sie das zuverlässig im Client tun können. Sie können aber stattdessen Push-Benachrichtigungen vom Server senden, was wahrscheinlich sowieso besser ist. – Patrick

Antwort

2

Service-Arbeiter eine begrenzte Lebensdauer-Datei haben, können Sie sie nicht für immer am leben zu erhalten.

Siehe die lifetime paragraph of the Service Workers specification.

+0

Danke für Ihre Antwort, aber in diesem Fall, was ist die Alternative, wie ich Online-Task-Zeit-Manager, so dass ich JavaScript-Timer im Hintergrund ausführen möchten, auch wenn Browser selbst geschlossen ist, um Benachrichtigung anzuzeigen ist spezifische Aufgabe Zeit beendet –

+0

Es gibt derzeit keine Alternative. In Zukunft vielleicht die Background Sync API (https://github.com/WICG/BackgroundSync/blob/master/explainer.md). – Marco

Verwandte Themen