Возврат данных подписки в рамках другой подписки

#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 излучают / закрыты ?