Angularfire2 как обрабатывать несколько наблюдаемых в angular4-5

Как лучше всего получить данные из нескольких наблюдаемых перед выполнением функции

ПРИМЕР:

Providerr.ts

obs1 = this.afDB.object(`app/radio`).snapshotChanges();
obs2 = this.afDB.object(`app/users`).snapshotChanges();
obs3 = this.afDB.object(`app/song`).snapshotChanges();

app.ts

doSomething(){

console.info('this is my', ${radio}, 'it plays on this date:' ,${date}, 'this song', ${song}`);

}

я размещаю подписки внутри друг друга .. это работает, но .. как правильно справиться с этим асинхронным поведением?

doSomething(){

provider.obs1.subscribe(val1 =>{
provider.obs2.subscribe(val2 =>{
provider.obs3.subscribe(val3 =>{

 console.info('this is my', ${val1.payload.val().radio}, 'it plays on this date:' ,${val2.payload.val().date}, 'this song', ${val3.payload.val().song}`);

});
});
});

    }
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте оператор forkJoin.

doSomething(){
   Observable.forkJoin(
      provider.obs1,
      provider.obs2,
      provider.obs3
   ).subscribe(data => {
       console.info("values: ",data[0], data[1], data[2]) 
   }, err => {
       console.info("Handle error here");
   })
}

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