retryの後に再試行を呼び出したい場合は、動作していない場合、retryWhenの後に同じobservableを呼び出すにはどうすればよいですか。私のコードが再試行に達していません。ここretryの後にretryを呼び出すことはできますか?
getStatuses(statuses : string[]): Observable<IStatus[]> {
let body = JSON.stringify({ "Statuses": statuses });
let headers = new Headers({ 'Content-Type': 'application/json' });
headers.append('Authorization', 'Bearer' + localStorage.getItem("access_token");
headers.append('Access-Control-Allow-Origin', '*');
let options = new RequestOptions({ headers: headers });
return this.http.post(this._baseUrl + '/statuses/statusesList', body, options)
.retryWhen(error => this.refreshToken(error)).retry(3)
.map((res: Response) => {
this.inspections = res.json();
return this.inspections;
});
}
は、問題があなたのrefreshToken
機能は、実際にエラーを処理または放出しないということであるNY refreshToken()関数
refreshToken(error$:any): Observable<any> {
return error$.flatMap((err:Error) => {
console.log("refreshing token");
const body: string = 'grant_type=refresh_token&refresh_token=' +
localStorage.getItem("refresh_token");
const headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
const options = new RequestOptions({ headers: headers });
// Make the refresh call as normal
return this.http.post('https://loginqa.test.com/as/token.oauth2', body, options)
}).map((res: Response) => {
return res.json();
})
.do((resp:Response) => {
var resultsToken=resp.json();
alert("testing refresh_token");
localStorage.removeItem('access_token');
localStorage.removeItem('refresh_token');
localStorage.setItem("access_token", resultsToken.access_token);
localStorage.setItem("refresh_token", resultsToken.refresh_token);
}
:?
そして、同じように使用 – paulpdaniels
@paulpdaniels質問を更新しました。 – user3154990
をチェックして最新のコードに更新するか、エラーを示すjsbinを作成できますか? – paulpdaniels