Wie man einen http-Aufruf alle 2 Minuten mit RXJS?
Habe ich einen service zu machen, dass ein Anruf auf mein rest-service alle 2 Minuten. Auf meinem service ich habe die folgende Funktion
getNotifications(token: string) {
const body = 'xxxxxxxxx=' + token;
return this.http.post('/rest/ssss/ddddddd/notificationcount', body, this.options)
.map((res) => res.json());
}
Auf meine Komponente nenne ich auch mein service-Funktion zum Aufruf der API.
this.notificationService.getNotifications(this.token).subscribe((data) => {
console.log(data);
});
Möchte ich diesen Aufruf alle 2 Minuten, was ist der beste Weg, dies zu tun?
- Hat man sich bei
repeatWhen
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie bereits
Observables
einfach machen, es zu nutzen 🙂Obersvable.interval()
ist Ihr guter Freund hier:In der Komponente, dies zu tun:
Erklärung:
.interval()
schafft eine beobachtbare, das strahlt eine Veranstaltung jeden 2Minuten.
.timeInterval()
konvertieren Sie eine Observable, die strahlt Elemente in einendas strahlt Hinweise auf die verstrichene Zeit zwischen diesen
- Emissionen.
.flatMap()
dann schließt Ihr jeden - of-service-Aufruf,Transformation der Ergebnisse in eine beobachtbare und zurückgeben. Diese sorgen
dass die Ihren service-Aufruf an das 0., 2., 4., 6.....minute aufgerufen wird
synchron. (denke es gibt eine Menge von
.then()
), ich.e -, service-bei der 2. minute wird nur aufgerufen werden, nachdem sich der 0. minute den Anruf, und 4. nur nach der 2., und so weiter..subscribe()
schließlich können Sie sich anmelden, um die DatenUpdate:
Wenn Sie pipeable Operatoren (rxjs5 und oben), leiten Sie einfach die Betreiber anstelle der Verkettung zu Ihnen:
Wenn Sie nicht wollen, um einen http-Aufruf und wollen einfach etwas tun, nach 2 Minuten, dann können Sie etwas tun, wie unten.
Gibt es eine weitere wichtige Sache, die Sie tun möchte, sollte Man dies zerstören beobachten, sobald Sie verlassen die aktuelle Seite, weil Sie nicht wollen, die extra Berechnung geht hinter der Szene, wenn diese nicht wirklich benötigt.
Gibt es mehrere Optionen, um den Newsletter abbestellen zu beobachten.
Speichern, sollten Sie den Verweis auf die beobachtbaren und Abmelden in
onDestroy
Methode.ODER verwenden Sie ngx-nehmen-bis-zu zerstören
Update Nach Kommentar