В ожидании двух методов, возвращающих наблюдаемые в angular

У меня есть два метода, которые вызывают вызовы API и возвращают наблюдаемые.

private method1(): Observable<Home> {
  return homeService.call.get();
}

private method2(): Observable<User> {
  return userService.call.get();
}

Тогда у меня есть два следующих метода:

private method3(): void {
  this.method1().subscribe();
  this.method2().subscribe();
}

и один последний

private method4(): void {
 // does things
 this.method3();
}

Я хочу, чтобы method4 подождал, пока method3 завершит все запросы, чтобы продолжить, но я понятия не имею, как этого добиться в angular 8. Какие-нибудь советы?


person heisenberg    schedule 26.07.2019    source источник
comment
С помощью forkJoin ~ оператора ~ RxJS (не оператора, сэр). Ваш method3 должен вернуть объединенные наблюдаемые. Уверен, что вы можете найти некоторые конкретные примеры Angular с помощью Google   -  person webdevius    schedule 26.07.2019
comment
@webdevius спасибо, посмотрю   -  person heisenberg    schedule 26.07.2019
comment
Вы можете это проверить :) Я ответил на вопрос, похожий на этот stackoverflow.com/questions/57178820/   -  person wentjun    schedule 26.07.2019
comment
Я знаю, что это уже было отмечено как ответ, но у меня есть пример для справки: stackblitz.com/ редактировать / angular-todos-deborahk   -  person DeborahK    schedule 26.07.2019


Ответы (1)


Вы, вероятно, смотрите на термин под названием сглаживание наблюдаемых - наличие вложенных наблюдаемых. (Если вас не волнует только окончательный ответ - forkJoin)

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

switchMap - имеет эффект отмены.

mergeMap - «Этот оператор лучше всего использовать, когда вы хотите сгладить внутреннюю наблюдаемую но хотите вручную контролировать количество внутренних подписок ".

forkJoin - «Этот оператор лучше всего использовать, когда у вас есть группа наблюдаемых и заботится только об окончательном выдаваемом значении каждого ".

person Dino    schedule 26.07.2019