angular - 重试机制实际上并未触发 HTTP 调用
问题描述
我有以下代码:
const http$: Observable<Course[]> = this.http.request('/api/courses');
const courses$ = http$
.pipe(
tap(() => console.log('HTTP request invoked ...')),
map( res => res['payload'] ),
shareReplay(),
retryWhen(errors =>
errors.pipe(
tap(() => console.log('Error retry invoked ...')),
delayWhen(() => timer(2000)
)
)),
retry(4)
);
现在,当发生网络故障时,我检查了控制台并发现消息“错误重试调用...”,但是当我检查网络选项卡时,我找不到再次调用的实际 HTTP 请求。
这背后有什么原因吗?
谢谢
解决方案
当您使用时,retryWhen
您不必添加retry(4)
,也删除shareReplay()
您应该能够看到它重试。
const courses$ = http$
.pipe(
tap(() => console.log('HTTP request invoked ...')),
map( res => res['payload'] ),
retryWhen(errors =>
errors.pipe(
tap(() => console.log('Error retry invoked ...')),
delayWhen(() => timer(2000)
)
)),
);
推荐阅读
- javascript - [IP 错误]MongooseServerSelectionError:无法连接到 MongoDB Atlas 集群中的任何服务器
- antlr - 使用 antlr 和 python 解析 VB 代码的抽象语法树
- android - 溢出菜单项中的标题未出现
- css - SASS/SCSS:将另一个 CSS 或 SCSS 文件的内容包含(不导入)到现有文件中?
- python - Python lambda 不是从函数中获取变量
- swift - 根据 Xcode 中选择的目标将图像加载到 uiimageview
- angular - Angular 11 可以根据 HTTP 请求的结果激活 Guard
- python - 比较两个大小不等的numpy数组并用nan填充排除元素
- kubernetes - 当容器限制未设置时,Prometheus 规则计算 POD 的 CPU 使用率
- azure - 删除给定 URI 的 Azure 存储 Blob