Ich habe App, wo ich Funktion get()
die mir Observable.interval(1000)
mit http GET zurückgeben.Angular2 - GET 400 Deaktivieren meiner Observable Subscribe mit Intervall
In app.component Ich abonniere diese Observable und Drucken auf dem Bildschirm einige Werte von GET.
Alles funktioniert gut, bis die Get-Antwort 400 zurückgibt - der Server sendet 404 von Zeit zu Zeit - es ist normal. Aber wenn ich 400 bekomme, hört mein Abonnement auf zu arbeiten. Bildschirm zeigt nur letzte valuse und hier "erfrischend"
stoppen ist ein Code:
getAct(symbol:string): Observable<Act> {
return Observable
.interval(1000)
.flatMap(() => {
return this.http.get(url)
.map((res: Response):Act => (res.json()))
.catch(err => {
return Observable.throw(err);
});
});
}
Und hier ist Code, der abonnieren:
this.actSub = this.actService
.getAct(this.symbol)
.subscribe(
act => {
console.log("ok");
this.act = act;
}
},
err => {console.warn(err);},
()=>console.log("Done")
);
Also, wenn ich Führen Sie meine App in der Konsole Ich habe dies:
So läuft das Programm gut - 29 werden erfolgreich, aber wenn es 400 bekommt, stoppt es, und dort war kein "ok" mehr.
Wo ist das Problem? Ist mein getAct() falsch, oder kodiere ich etwas, wenn ich es abonniere?
Bitte helfen, ich habe versucht, das zu reparieren, aber ich konnte nicht.
Dies ist ein normales Verhalten. Ein Observable stoppt den Wert, nachdem er abgeschlossen ist, oder Fehler (wie bei einer 4 ** HTTP-Antwort). – AngularChef