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

У меня есть два метода, которые делают вызовы 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 закончить все запросы, чтобы продолжить, но я не знаю, как добиться этого в угловых 8. Любые советы?

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам