forkJoin для нескольких подписок NgRx Store - PullRequest
0 голосов
/ 17 октября 2018

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

this.subscriptionsArray = this.store.select('state')
forkJoin(this.subscriptionsArray).subscribe(sub => {
  // do something here with response
});

Проблема в том, что магазин ничего не генерирует.

Я нашел решение на репозитории GitHub:

this.subscriptionsArray = this.store.select('state').pipe(first())

Этоработать, но мне нужен последний результат, и очевидное решение не работает.Следующий код не работает:

this.subscriptionsArray = this.store.select('state').pipe(last())

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

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

const sub = this.store.select(selectStore1).pipe(
  first(),
  withLatestFrom(this.store.select(selectStore2).pipe(first())),
  concatMap(([selectStore1, selectStore2]) => {
    // do something
  })
)
0 голосов
/ 17 октября 2018

По моему мнению, ваша наблюдаемая не является типом запуска и забытия, поэтому вы не можете получить последнее переданное значение, потому что:

Издает последнее значение, полученное из источника при завершении, на основе предоставленного выражения.

Ссылка: последний оператор фильтрации

Вы должны попробовать ОбъединитьПоследние :

Когда наблюдаютсяиспускает значение, испускает последнее значение из каждого.

combineLatest(...this.subscriptionsArray).subscribe(value => console.log(value))
...