Я использую библиотеку HTTP Angular 2, которая возвращает наблюдаемую. Я хочу реализовать повторную попытку с определенным статусом/кодом ошибки.Угловой 2 RxJS Наблюдаемый: Повторить попытку фильтра после ошибки Состояние
У меня проблема, если ошибка не 429, Observable.of(error)
получает выполнение в случае ошибки, чтобы повторить попытку, но когда все ваши повторные попытки не выполняются, выполнение потока переходит к блоку успеха вместо блока catch.
Как сделать выполнение потока для захвата блока во всех попытках неудачи?
return this.http.get(url,options)
.retryWhen((errors) => {
return errors
.mergeMap((error) => (error.status === 429) ? Observable.throw(error) : Observable.of(error))
.take(2);
})
.toPromise()
.then((res:Response) => console.log('In Success Block'))
.catch((res) => this.handleError(res));
это будет решить мою проблему
return this.http
.post(url, JSON.stringify(body), requestOptions).retryWhen((errors) => {
return errors
.mergeMap((error) => (error.status === 404) ? Observable.throw(error) : Observable.of(error))
.take(2);
}).map((res:Response) =>{
if (res.status === 200)
return res;
else
return Observable.throw(res);
})
.toPromise();
http://stackoverflow.com/questions/39480348/angular-2- rxjs-observable-retry-except-on-429-status/39928110 # 39928110 –