2017-05-18 5 views
1

Wir haben eine App, die Benutzerzeitpläne pro Tag abruft. Sie können Seite für Tage blättern und bei jedem Scroll-Stopp die http.get abfeuern und den Zeitplan für diesen Tag abrufen.Abbrechen von ausstehenden HTTP-Anforderungen in Angular 4/Ionic 3

Das Problem, auf das wir stoßen, ist das Scrollen von Personen, das Heben der Finger und das Scrollen. Wir haben ein Timeout implementiert, so dass es eine Verzögerung zwischen dem Stoppen der Slides und dem Anforderungsfeuern gibt, aber wir können das nicht zu lange machen und trotzdem werden eine Anzahl von http.get Anfragen ausgelöst.

Ich brauche eine Möglichkeit, alle ausstehenden HTTP-Anfragen beim Start eines neuen abzubrechen.

slideStop() { 
    ..gather date information and other relevant parameters.. 

    <stop any pending HTTP requests> 

    this.http.get() 
} 
+0

prüfen diese https://stackoverflow.com/questions/36490926/how-to-cancel-a-httprequest-in-angular-2 über Abmelden von HTTP –

+0

Dank, die schön gearbeitet @AmrElAdawy – mycroft16

Antwort

2

Wenn Sie switchMap auf einer beobachtbaren verwenden, wird es alle ausstehenden Anfragen abzubrechen, wenn Sie wiederverwenden diese beobachtbar wie in der Dokumentation erwähnt (https://angular.io/docs/ts/latest/guide/router.html#activatedroute-the-one-stop-shop-for-route-information)

Der switchMap Operator ermöglicht es Ihnen, ein ausführen Aktion mit dem aktuellen Wert des Observable und ordnen Sie es einem neuen Observable zu. Wie bei vielen rxjs-Operatoren behandelt switchMap sowohl ein Observable als auch ein Promise, um den von ihnen ausgegebenen Wert abzurufen.

Der SwitchMap-Operator löscht auch alle In-Flight-Anfragen, wenn der Benutzer zur Route zurückkehrt, während er noch einen Helden abholt.

Verwandte Themen