gpt4 book ai didi

angular - Angular HTTP客户端重试时间无法在调用方上捕获错误

转载 作者:行者123 更新时间:2023-12-03 07:40:47 25 4
gpt4 key购买 nike

我有一个 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=>{    
})

关于angular - Angular HTTP客户端重试时间无法在调用方上捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52304445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com