我有一个 Ionic 3应用程序,其中我使用HttpClient,并且有一个 API 调用,该调用是对服务器的 GET 请求。第一次尝试失败时,我将调用retryWhen
,表明发生了错误。
问题是我无法将错误捕获到调用方
这是我下面的服务代码。
getDriverMeInfo() {
return this.http.get(`${this.global.baseUrl}/me`)
.retryWhen(err => err.delay(10000).take(10)) // Delay after 10 seconds when an error occured and retry maximum of 10 takes
.concat(Observable.throw(new Error('Retry limit exceeded!'))).toPromise()
}
下面的组件代码是调用者
async getDriverInfo() {
try {
const meDetails = await this.driverMe.getDriverMeInfo() // Get the profile information of the driver if
console.log(meDetails)
} catch (err) {
console.log(err) // This wouldn't catch the error on the HttpErrorResponse
}
}
我唯一遇到此错误的是
Observable.throw(new Error('Retry limit exceeded!'))
,但是HttpErrorResponse
的实例将为我提供状态码或消息消息为什么失败无法被捕获。欣赏是否有人可以提供帮助。
提前致谢。
最佳答案
getDriverMeInfo()
{
return this._http.get<any>(`${this.global.baseUrl}/me`)
.retryWhen((err)=>
{
return err.scan((retryCount)=>{
retryCount+=1;
if(retryCount<6)
{
console.log("retrying attemp: "+ retryCount);
return retryCount
}
else
{
throw(err)
}
},0).delay(10000)
})
}
和组件,
this.driverMe.getDriverMeInfo().subscribe(res=>{
})