首页 > 解决方案 > 根据数据结果重复请求

问题描述

嗨,我是 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()
   )
}

标签: angularrxjs

解决方案


您可以使用重试运算符在服务中执行此操作,而不是在组件中处理。

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()
   )
}

推荐阅读