#javascript #typescript #rxjs #observable #rxjs-observables
Вопрос:
this.subscription1$ .pipe( takeUntil(this.ngUnsubscribe), map((data1) =gt; { return data1.map((data2, index) =gt; { // we should return here the value, not the subscription return this.subscription2(index 1).pipe( takeUntil(this.ngUnsubscribe), map((data3) =gt; { return of(data3); }) ); }); }), ) .subscribe((data) =gt; { console.log('FINAL: ', data); });
Эта последняя консоль показывает:
[Наблюдаемый, Наблюдаемый, Наблюдаемый, Наблюдаемый]
как я мог бы получить другие данные о подписке напрямую, не получая никаких заметных данных?
Ответ №1:
Зависит от того, как вы хотите объединить результаты подписки 2. Если вы хотите подождать, пока все завершится, вы можете использовать forkJoin
this.subscription1$.pipe( takeUntil(this.ngUnsubscribe), switchMap((data1) =gt; { return forkJoin(...data1.map((data2, index) =gt; this.subscription2(index 1))) }) ).subscribe((data) =gt; { console.log('FINAL: ', data); })
Может быть, вы хотите combineLatest
понаблюдать за конкретными изменениями. Выберите подходящего оператора здесь в соответствии с вашими потребностями
Комментарии:
1. Мне просто нужны последние данные. Мне не нужно объединять какие-либо результаты, просто получите последний
2. также пробовал это, но финальная консоль не запускается
3. Вы уверены, что все наблюдаемые объекты subscription2 излучают / закрыты ?