J'utilise la bibliothèque HTTP d'Angular 2 qui renvoie un observable. Je veux implémenter la relance sur certains statuts/codes d'erreur.
J'ai un problème, si l'erreur n'est pas 429, Observable.of(error)
est exécuté en cas d'erreur pour réessayer, mais lorsque vos deux réessais échouent, l'exécution du flux passe au bloc success au lieu du bloc catch.
Comment faire en sorte que l'exécution du flux vers le bloc de capture dans tous les échecs de réessai ?
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));
Cela résoudra-t-il mon problème ?
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();