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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJS - 连接并合并两个可观察对象相关的知识,希望对你有一定的参考价值。

我有两个Observables

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

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

我想在单个对象中转换这两个可观察对象并将它们的值“合并”在单个对象中。

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

但是,jobs$的值只有在availableTags$发布其值后才能获取。那可能吗?

这一切都是为了避免输入属性的“双重加载”。

答案

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

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

以上是关于RxJS - 连接并合并两个可观察对象的主要内容,如果未能解决你的问题,请参考以下文章

rxjs中常用的操作符

一个一个可观察的 RxJS

在对对象进行操作时链接递归 RxJS 可观察对象

RxJs:根据字段值更改创建可观察对象

Angular/RxJS:带有可观察对象的嵌套服务调用

Angular RxJS入门笔记 (Observable可观察对象Subscribe订阅Observer观察者Subscription对象)