Ich habe einen Dienst, der Daten vom Server abruft. Diese Daten werden verwendet, um eine Seite zu füllen. Ich möchte die Seite alle 5 Sekunden aktualisieren. Ich versuchte mit einem sehr einfachen setInterval()
, aber dann sind alle Anrufe zum Server eins nach dem anderen, ohne zu warten, bis der vorherige fertig ist. Dies ist ein Problem, wenn zum Beispiel der Server ausfällt. Ich weiß jetzt nicht, welches ist die beste Lösung, vielleicht mit Rxjs und Observables.Angular2 - Wiederholen Sie einen Anruf eines Dienstes
0
A
Antwort
0
Sie könnten etwas Einfaches wie dies tun:
Rx.Observable.interval(5000)
.flatMap(() => this.http.whateverYouCall)
.map(resp => resp.json())
.subscribe((val) => //do something here with the result)
Dies wird alle 5 Sekunden ein neuer Anruf. Wenn Sie wirklich nur 5 Sekunden nach dem vorherigen einen neuen Anruf erstellen möchten, lassen Sie es mich wissen und ich werde diesen aktualisieren.
Wenn Sie nur der nächste Anruf gestartet werden soll, wenn die vorherige Sie dies tun könnte, ist beendet:
let subject$ = new Rx.BehaviorSubject("a");
subject$
.concatMap(() => fakeHttp().concat(Rx.Observable.empty().delay(5000)))
.do(() => subject$.next("a"))
.subscribe((val) => console.log(val));
jsbin: http://jsbin.com/fufuqid/13/edit?js,console Sie werden sehen, dass alle 7 Sekunden „b“ angemeldet ist. 2 Sekunden für den verspotteten Anruf und 5 Sekunden vor dem Auffrischen.
Verwandte Themen
- 1. Angular2 & RxJS - Caching eines Dienstes, der einen Parameter
- 2. Schreiben eines injizierbaren Dienstes in Angular2
- 3. Autowiring eines Dienstes in einen Validator
- 4. Testen eines gRPC-Dienstes
- 5. Debuggen eines Windows-Dienstes
- 6. Debugging eines Windows-Dienstes
- 7. Angular2 Synchrone Http-Anruf
- 8. Entwerfen eines Pinging-Dienstes
- 9. Neustart eines Windows-Dienstes
- 10. Funktionsprüfung eines Dienstes
- 11. axios - Führen Sie einen Anruf aus, bevor Sie eine Anfrage wiederholen
- 12. Wie Https Anruf in Angular2
- 13. Android: Einheit Testen eines Dienstes
- 14. Erstellen eines Dienstes in Android
- 15. Automatische Aktualisierung eines Windows-Dienstes
- 16. So wiederholen Sie den Ajax-Anruf bis zum Erfolg
- 17. Redundanzen eines E-Mail-Dienstes
- 18. Erneute Registrierung eines Dienstes JMDNS
- 19. Android - Machen Sie einen Anruf
- 20. Überwachung eines benutzerdefinierten Windows-Dienstes
- 21. Muss ich beim Starten eines Dienstes einen Intent-Filter hinzufügen?
- 22. AngularJS Unit Testen eines Dienstes
- 23. Erstellen eines Python Win32-Dienstes
- 24. InvalidDataAccessResourceUsageException beim Testen eines Dienstes
- 25. Wie man einen Ajax-Anruf mit angular2/http
- 26. So stornieren Sie einen asynchronen Anruf?
- 27. Schreiben eines Dienstes in F #
- 28. So wiederholen Sie einen Mausklick in .NET
- 29. Wie behebe ich einen "Fatal error" beim Erstellen eines Dienstes?
- 30. Hinzufügen von Autorisierung zu Header in angular2 api Anruf
ja bitte .. ich möchte den nächsten Anruf nur starten, wenn der vorherige fertig ist – ayasha