RXJS:合并流并利用最新的一个

时间:2018-05-15 15:21:53

标签: angular rxjs ngrx

我有两个不相关的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))
  );

我是否在正确的位置?

1 个答案:

答案 0 :(得分:1)

与我所有的rxjs问题一样,它只是对事物的排序,并理解哪些值被戳到哪里。好老的详细记录到救援。这是有效的:

 navigationEvents$
  .pipe(merge(userQuery$), withLatestFrom(userQuery$))
  .subscribe(([payload, query]) => store$.dispatch(new FetchUsers(query)));