angular - 根据数据结果重复请求
问题描述
嗨,我是 Angular 的新手,我想知道根据结果数据重复 GET 请求的正确方法是什么。
项目服务.ts
ScanItems():Observable<any>{
return this.http.get<any>(url)
}
item.component.ts
GetScannedItems(){
this.ScanSubscription = this.itemService.ScanItems()
.subscribe(
data => {
RDate = new Date(data.Date).getTime();
const NDate = new Date().getTime();
const Diff = RDate - NDate
if(Diff > (-300000)){
console.log('Valid')
}
else {
// Repeat Request Here!!!
}
},
error => console.error(error),
() => this.ScanSubscription.unsubscribe()
)
}
解决方案
您可以使用重试运算符在服务中执行此操作,而不是在组件中处理。
GetScannedItems(){
this.ScanSubscription = this.itemService.ScanItems()
.pipe(
map(
data => {
RDate = new Date(data.Date).getTime();
const NDate = new Date().getTime();
const Diff = RDate - NDate
if(Diff > (-300000)){
return of(true);
}
else {
return Observable.throw('retry');
// Repeat Request Here!!!
}
}),
delay(500),
retry()
)
}
推荐阅读
- paypal - 贝宝账单协议令牌
- javascript - jQuery MS Edge:trigger('blur') 为箭头、退格和删除保持焦点
- php - PHP Curl 无法发布数据
- c# - 是否可以在 ASP.NET MVC 中的 Selenium 中获得 AJAX 响应?
- javascript - 有没有办法确定我是在本地工作还是使用 Javascript 在互联网上工作
- javascript - 如何在普通 JS 中使用 SmoothDnD 库?
- javascript - 如何使用 REST API 链接来自 django 和 extjs 字段的字段值
- css - 如何在以下定义网格行模板:重复css网格拼贴布局
- javascript - 工具提示显示内容
- android - PopupWindow 在 Android API 28 的自定义键盘上被剪辑