gpt4 book ai didi

angular - 使用 Angular http.get 重试失败后抛出错误

转载 作者:行者123 更新时间:2023-12-04 01:37:36 25 4
gpt4 key购买 nike

我正在尝试通过重试实现 Angular5 http.get。我写了

http.get<any>('/api/study').retryWhen(
(errors: Observable<any>):Observable<any> => {
return errors.flatMap((error: any) => {
if (error.status == 500) {
return Observable.of(error.status).delay(1000);
}
return Observable.throw(error);
}).take(5);
});

如果出现错误 500,这将继续重试最多 5 次。但是,如果它连续失败 5 次,那么它会返回成功(带有空数据)。我不想要那个。相反,我希望它抛出最后一个错误。

我试着把 .concat(Observable.throw({})) 放在 take() 之后,这行得通,但它没有给我任何信息,比如状态码最近的错误。

上次重试失败后如何获取最近的错误?

最佳答案

您不需要使用 take(5) 来计算失败的尝试次数,您可以使用局部变量自行计算。

例如你可以这样做:

http.get<any>('/api/study').retryWhen((errors: Observable<any>) => {
let errors = 0;

return errors.flatMap((error: any) => {
if (errors++ < 5 && error.status == 500) {
return Observable.of(error.status).delay(1000);
}
return Observable.throw(error);
});
});

关于angular - 使用 Angular http.get 重试失败后抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013308/

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