我有两个不相关的observable具有相同的效果,所以我希望同时观察它们并保持代码DRY。
所以我实际上想要观察他们的流,当一个值弹出时,订阅其中只有一个的最新值,比如;
/* observing a change in the query values */
var userQuery$ = store$.pipe(select(fromUserStore.getUserQuery));
/* always reload the users when navigation occurs */
var navigationEvents$ = router.events.filter(
event =>
event instanceof NavigationEnd &&
(event as NavigationEnd).url.endsWith("manage-users")
);
navigationEvents$
.pipe(withLatestFrom(userQuery$), merge(userQuery$))
.subscribe((query: QueryDefinition) =>
store$.dispatch(new FetchUsers(query))
);
我是否在正确的位置?
答案 0 :(得分:1)
与我所有的rxjs
问题一样,它只是对事物的排序,并理解哪些值被戳到哪里。好老的详细记录到救援。这是有效的:
navigationEvents$
.pipe(merge(userQuery$), withLatestFrom(userQuery$))
.subscribe(([payload, query]) => store$.dispatch(new FetchUsers(query)));