Observableを返すAngular 2 HTTPライブラリを使用しています。 特定のエラーステータス/コードに対して再試行を実装したいと思います。角2 RxJS Observable:RetryWhenフィルタがエラーで再試行するステータス
エラーが429ではない場合、Observable.of(error)
がエラー時に再試行するようになっていますが、2回の再試行がすべて失敗すると、フローの実行はcatchブロックではなく成功ブロックになります。
すべての再試行で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 –