Повторите запрос на основе результата данных - PullRequest
0 голосов
/ 15 октября 2018

Привет, я новичок в angular и хочу знать, как правильно повторять запрос GET на основе полученных данных.

item.service.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()
   )
}

1 Ответ

0 голосов
/ 15 октября 2018

вместо обработки в компоненте, вы можете сделать это в сервисе с оператором повтора.

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()
   )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...