问题是多次触发订阅方法需要避免这样的事情。
有了这个,所有三个选择器在初始时间结合最新调用一次。但是,问题是下次如果它触发组合最新的订阅方法,它会触发 3 次而不是 1 次。
我尝试在 fork Join 的帮助下没有帮助,甚至订阅也不会用 fork Join 触发
请建议哪个 rxjs 操作员可以帮助并获得此案例
const volumeAccSub = this.store
.select(fromSelectors.getVolumeAccContent)
.pipe(filter(data => !!data));
const volumeMaxSub = this.store
.select(fromSelectors.getVolumeMaxContent)
.pipe(filter(data => !!data));
const flowRateAccSub = this.store
.select(fromSelectors.getFlowRateAccContent)
.pipe(filter(data => !!data));
const mergedContentOps = combineLatest([
flowRateAccSub,
volumeAccSub,
volumeMaxSub,
]).pipe(delay(2000)).subscribe(val => {
this.formatContentReceived(val);
});
请建议哪个 rxjs 操作员可以帮助并获得此案例
谢谢提前
我看到您正在使用 ngrx 并且您正在尝试监听同一状态的 3 个选择器。
在这种情况下,最好的解决方案是创建一个选择器,将 3 个选择器结合起来,并在一次发射中返回您需要的数据,这样您就可以只订阅一个可观察量。
来自 ngrx 文档的示例:
export const selectUser = (state: AppState) => state.selectedUser;
export const selectAllBooks = (state: AppState) => state.allBooks;
export const selectVisibleBooks = createSelector(
selectUser,
selectAllBooks,
(selectedUser: User, allBooks: Book[]) => {
if (selectedUser && allBooks) {
return allBooks.filter((book: Book) => book.userId === selectedUser.id);
} else {
return allBooks;
}
}
);