我有一个 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
的实例将为我提供状态代码或消息为什么失败无法被捕获。
感谢有人可以帮助您。 预先感谢。
答案 0 :(得分:3)
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=>{
})