使用此Angular 2代码进行http调用' ./customer.json'然后使用其中返回的URL进行进一步调用。如果第二个调用使用rxjs重试方法失败,如何重试两个调用?目前它似乎只是重试第二个。
this.http.get('./customer.json')
.map((res: Response) => {
this.customer = res.json();
return this.customer;
})
.flatMap((customer) => {
return this.http.get(customer.contractUrl)).map((res: Response) => res.json()
})
.retry(1);
因此,如果this.http.get(customer.contractUrl))
失败,我该怎样让它再次重试http.get('./customer.json')
和this.http.get(customer.contractUrl))
。
答案 0 :(得分:1)
我不确定为什么我的原始代码似乎无法正常工作,但我尝试使用catch方法,而且似乎有效。
makeCall(isRetry = false){
return this.http.get('./customer.json')
.map((res: Response) => {
this.customer = res.json();
return this.customer;
})
.flatMap((customer) => {
return this.http.get(customer.contractUrl)).map((res: Response) => res.json()
})
.catch((err) => {
if (isRetry === false){
return this.makeCall(true);
}
return Observable.throw(err);
});
}
我会制作一些jsbins,看看我是否能搞清楚