RxJS-合并并合并两个可观察对象

时间:2019-01-10 16:49:44

标签: rxjs

我有两个Observables

public readonly availableTags$ = this.tagSandbox.observeTags()
public readonly jobs$ = this.jobSandbox.observeJobsAfterFiltering()

我用作带有Input管道的Angular组件的async值。

我想将这两个可观察的对象转换成一个对象,并将其值“合并”到单个对象中。

{
   availableTags: Tag[],
   jobs: Job[]
}

但是,jobs$的值仅应在availableTags$发出其值之后才能获取。 有可能吗?

所有这些都是为了避免Input属性的“双重重载”。

1 个答案:

答案 0 :(得分:1)

您可以为此使用cocatMapmergeMap也可以使用),然后将第二个调用的响应以及第一个调用的结果映射到单个对象中:

availableTags$.pipe(
  concatMap(availableTags => jobs$.pipe(
    map(jobs => ({ availableTags, jobs })),
  ))
);