gpt4 book ai didi

Angular 5 HttpInterceptor 重试请求

转载 作者:太空狗 更新时间:2023-10-29 17:53:42 24 4
gpt4 key购买 nike

Angluar 5 HttpInterceptor 如何在出错时重试请求?

Angular 文档没有显示 HttpInterceptor 重试的示例: https://angular.io/guide/http https://angular.io/api/common/http/HttpInterceptor

请注意,在 HttpClient 对象上有一个重试。这在这种情况下没有帮助。

我试图实现的伪逻辑:发送请求IF 错误响应 THEN 更改请求并重试请求。

此 HttpInterceptor 成功运行请求并捕获错误但不会重试请求。

export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

return next
.handle(req)
.do(event => {
}, (err: any) => {
let reqRepeat = req.clone(); // For now, keep it simple. Don't change original request.
return next.handle(req); // Retry request. THIS DOESN'T SEEM TO DO ANYTHING!
})
}
};

最佳答案

rxjs 的“do”运算符不会修改观察者。返回 '​​next.handle(...)' 应该不起作用。

尝试改用“catch”运算符。

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).catch(() => {
const newReq = req.clone();
return next.handle(newReq);
});
}

不要忘记导入 catch 运算符:

import 'rxjs/add/operator/catch';

关于Angular 5 HttpInterceptor 重试请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48348946/

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