如何从动态创建和销毁的源构建 Observable?

How to build Observable from dynamically created and destroyed sources?

我的问题与这个类似RXJS: Single Observable from dynamically created Observables(没有答案)。

我想连续解析一些页面。在主页上,我可以获得要解析的 link 页面列表。这个 link 的列表会随着时间的推移而变化。然后我跟随 links 并连续解析页面,直到它们的 link 从主页消失并开始解析出现在主页上的新页面。

我现在的设置如下。我有一个 class,给定一个 url 可以 return 一个 Observable 连续发射的项目(从主页解析单个 link)。这很好用。但是,我想要一个 "master" class 能够 return 从多个页面获取相同项目的 Observable。我遇到的问题是页面列表正在变化(基础 Observables 的列表也在变化,我不能只使用 Observable.merge.

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

我该如何解决这个问题?

如果您已经拥有 "main" 页面的 Observable,以及基于此数据获取项目的函数。您可以将 switchMap 运算符用于 "switching" 这个动态变化的列表,例如:

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

其中:

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