выполнить несколько запросов угловых 8 - PullRequest
1 голос
/ 21 ноября 2019

Я новичок в операторах rxjs

Какой самый эффективный способ выполнить два запроса и проверить, вернется ли один из запросов как действительный, а также проверить, не оба ли завершились.

Я пытался использовать forkJoin, но не смог определить, когда, когда оба запроса не были выполнены.

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Хорошо, forkJoin, вероятно, то, что вы ищете, но если вы хотите обрабатывать обе ошибки, вам нужно будет связать каждый источник с catchError и возвращать ошибки как next уведомления.

В противном случае один сбойный Observable обнаружил бы цепочку, и вы никогда не узнаете, вышел ли из строя второй Observable или какой из двух Observable вышел из строя.

forkJoin([
  source1$.pipe(catchError(error => of(error))),
  source2$.pipe(catchError(error => of(error))),
]).subscribe(([reponse1, response2]) => {
  if (reponse1 instanceof ErrorResponse || reponse2 instanceof ErrorResponse) {
     // or whatever works for you
  }
});
1 голос
/ 21 ноября 2019

Это не так, вы можете использовать forkjoin следующим образом:

this.forkJoinRequest= forkJoin([this.service.getMethod1(), this.service.getMethod2()]).subscribe(response => {
                  this.list1= response[0];
                  this.list2=response[1];
 },
                  (error) => { this.error_code = error.status; });

вы можете использовать свою "ошибку", чтобы показать, почему произошел сбой forkjoin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...