Угловой вызов функции после завершения двух вызовов http - PullRequest
0 голосов
/ 27 марта 2019

Я использую angular4, и я хочу, чтобы функция вызывалась после завершения 2 или 3 вызовов.

пример:

  this.Get.firstGet().subscribe( data=> {

               this.test();
          });

  this.Get.secondGet().subscribe( data=> {

               this.test();
          });

  test(){
    //do something when firstGet and secondGet are both finished

   }

спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Вы можете использовать combineLatest из RxJS, чтобы дождаться срабатывания всех внутренних наблюдаемых хотя бы один раз

import { combineLatest } from 'rxjs';
...


combineLatest(
   this.Get.firstGet(),
   this.Get.secondGet()
)
.subscribe(([responseOfFirst, responseOfSecond]) => {
     this.test();
})

Или вы также можете использовать forkJoin: https://www.learnrxjs.io/operators/combination/forkjoin.html

0 голосов
/ 27 марта 2019

Вы звоните отдельно this.test(); в каждом subscribe(), поэтому по своему коду вы звоните дважды.

Я полагаю, что вы хотите forkJoin , он будет выполнять только успешные блоки ошибок при разрешении всех наблюдаемых

forkJoin(this.Get.firstGet(), this.Get.secondGet()).subscribe(([firstGet, secondGet]) => {
    this.test();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...