У меня есть приложение, где у меня есть функция get()
, которая возвращает меня Observable.interval(1000)
с http GET.Angular2 - GET 400 отключить мою наблюдаемую.подписку с интервалом
В app.component я подписываю это Observable и печатаю на экране некоторые значения из GET.
Everythings отлично работает до тех пор, пока ответ получения ответа не будет 400 - сервер посылает 404 время от времени - обычно. Но когда я получаю 400, моя подписка перестает работать. экран показывает только последний valuse и остановить "освежающий"
Вот код:
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);
});
});
}
А вот код, который подписываются:
this.actSub = this.actService
.getAct(this.symbol)
.subscribe(
act => {
console.log("ok");
this.act = act;
}
},
err => {console.warn(err);},
()=>console.log("Done")
);
Итак, если я запустите мое приложение на консоли. У меня есть следующее:
Итак, программа работает нормально - 29 получить успех, но когда он восстанавливает 400 своих остановок и там, где больше нет «хорошо».
Где проблема? Является ли мой getAct() неправильным, или, может быть, когда я подписываюсь, я что-то неправильно делаю?
Пожалуйста, помогите, я попытался восстановить это, но я не мог.
Это нормальное поведение. Наблюдаемые прекращают выдавать значение после завершения или ошибок (как в случае с ответом 4 ** HTTP). – AngularChef