Вы не сможете сделать то, что сделали с async
/ await
, так как вам все еще нужен обратный вызов .subscribe
, и существует вероятность того, что несколько свойств будут отправлены. Вы должны никогда вкладывать .subscribe
звонки. Как правило, вы будете использовать оператор Observable более высокого порядка, например mergeMap
, или создатель Observable, который синхронизирует излучение нескольких наблюдаемых вместе, например combineLatest
:
combineLatest(AsyncFooData(), AsyncBarData()).subscribe([fooData, barData] => {
});
Точная функция, которая вам нужна, зависит от ваших собственных потребностей, а также от того, как foo
и bar
излучают:
combineLatest
- Излучает каждый раз, когда излучает любой источник ( примечание: не начинает излучать, пока все источники не выпустят один раз).
zip
- Синхронизирует выбросы, например, испускается один раз, когда каждый наблюдаемый испускает один раз, затем дважды и т. д.
forkJoin
- издает, когда все исходные наблюдаемые завершены
merge
- Издает каждый раз, когда излучает любой источник. Он не объединяет выходные данные, как другие выше.
Есть еще доступные: https://www.learnrxjs.io/operators/combination/