angular - 防止 Observable 在服务器关闭时重试
问题描述
在下面的一段代码中,我用来httpClient
从端点获取用户列表,在完美的世界中,应用程序发送一个 http 请求并获取用户列表,但是当服务器返回一个4xx
或5xx
错误时,应用程序会在 10 毫秒后重试并不断向服务器发送数千个 http 请求。
this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
.subscribe(
value => console.log('subscribe.next'),
err => console.log('subscribe.error'),
() => console.log('subscribe.done')
);
如何阻止应用程序重试。
我试图将其转换Observable
为 aPromise
但我得到了相同的结果。
- “@angular/core”:“6.0.0”
- “@angular/http”:“6.0.5”
- “rxjs”:“6.2.1”
解决方案
有 retry 方法可以自动重新订阅失败的 Observable 指定次数。重新订阅 HttpClient 方法调用的结果具有重新发出 HTTP 请求的效果。
this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
.pipe(
retry(0), // retry a failed request up to 0 times
catchError(this.handleError) // then handle the error
).subscribe(...);
}
推荐阅读
- rust - 如何放松对已知变体的嵌套匹配的非详尽模式检查?
- nginx - 将 Google Kubernetes Ingress 重定向到 HTTPS
- traefik - traefik 中的 WSS 到 WS 失败并出现 phantombot 图像
- php - 如何检查 url 是否是带有 php 和 mod_rewrite 参数的主页
- excel - 需要更改多个工作表中所有数据透视表的数据源
- spring - @Scheduled 特定时间间隔的注解
- haskell - 在多层 monad 中操作一个值
- django - 在 Django 中处理发布请求时出错并得到“关闭时间过长并被杀死”
- python - 根据对内容施加的条件选择列
- powershell - 将 Powershell 输出写入 csv 文件时遇到问题