首页 > 解决方案 > 如何从动态创建和销毁的源构建 Observable?

问题描述

我的问题类似于这个RXJS: Single Observable from dynamic created Observables (no answer there)。

我想连续解析一些页面。有一个主页,我可以在其中获取要解析的页面链接列表。此链接列表随时间而变化。然后我跟踪链接并连续解析页面,直到它们的链接从主页消失并开始解析出现在主页上的新页面。

我现在的设置如下。我有一个类,给定一个 url 可以返回一个Observable连续发射的项目(从主页解析单个链接)。这很好用。但是,我想要一个“主”类,它能够返回一个相同项目的 Observable,但取自多个页面。我遇到的问题是页面列表正在改变(底层Observables 列表也是如此,我不能只使用Observable.merge.

TL;DR:我有多个Observable要合并的 s。但是这个Observables 列表是动态变化的,我不知道如何处理。

我该如何处理?

标签: rxjsrx-javarx-java2reactivex

解决方案


如果您已经拥有“主”页面的 Observable,以及基于此数据获取项目的功能。您可以使用switchMap运算符来“切换”这个动态变化的列表,例如:

getMainPages().pipe(
  switchMap(main => getItemsFromMultiplePages(main))
)

在哪里:

  • getMainPages()- 返回主页面数据的 Observable
  • getItemsFromMultiplePages(main)- 返回可观察的项目,通过组合(可能使用merge)来自多个页面的数据创建

推荐阅读