Ngrx, Rxjs - объединение наблюдаемых потоков, возвращающих новый поток - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь объединить два наблюдаемых потока, чтобы создать новый, на который я тоже могу подписаться.Оба входных потока возвращают массивы объектов.Я попытался использовать оператор forkJoin, а затем карту каналов и подписаться так:

forkJoin(
  this.firstObservable$,
  this.secondObservable$
).pipe(
  map(([first, second]) => {
    // here create a new array array = [] and push new Object { first.something, second.something
    // return newArray
  }
  })
).subscribe((data: any) => {
  this.data = data;
});

Но, похоже, это не работает так, как ожидалось.Я также попробовал это с краном.Что было бы правильным способом?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Rxjs предоставляет несколько операторов для объединения потоков (список этих операторов вы можете найти здесь ), в вашем случае я могу порекомендовать вам использовать combineLatest или forkJoin, которые использовать в зависимости от типавходные наблюдаемые

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

combileLatest - Когда любое наблюдаемое излучает значение,выдает последнее значение из каждого

уведомления: селекторы ngrx не завершаются, если ваши входные данные наблюдаются, это селекторы ngrx, используйте combineLatest

1 голос
/ 18 мая 2019

ForkJoin сам возвращает заметку, на которую вы можете подписаться как

forkJoin([
  this.firstObservable$,
  this.secondObservable$
]).subscribe(res => {
    //res[0] is the result emitted for the first observable
});

, и вам не нужно использовать map, чтобы попытаться объединить их

...