rxjs - 如何从动态创建和销毁的源构建 Observable?
问题描述
我的问题类似于这个RXJS: Single Observable from dynamic created Observables (no answer there)。
我想连续解析一些页面。有一个主页,我可以在其中获取要解析的页面链接列表。此链接列表随时间而变化。然后我跟踪链接并连续解析页面,直到它们的链接从主页消失并开始解析出现在主页上的新页面。
我现在的设置如下。我有一个类,给定一个 url 可以返回一个Observable
连续发射的项目(从主页解析单个链接)。这很好用。但是,我想要一个“主”类,它能够返回一个相同项目的 Observable,但取自多个页面。我遇到的问题是页面列表正在改变(底层Observable
s 列表也是如此,我不能只使用Observable.merge
.
TL;DR:我有多个Observable
要合并的 s。但是这个Observable
s 列表是动态变化的,我不知道如何处理。
我该如何处理?
解决方案
如果您已经拥有“主”页面的 Observable,以及基于此数据获取项目的功能。您可以使用switchMap运算符来“切换”这个动态变化的列表,例如:
getMainPages().pipe(
switchMap(main => getItemsFromMultiplePages(main))
)
在哪里:
getMainPages()
- 返回主页面数据的 ObservablegetItemsFromMultiplePages(main)
- 返回可观察的项目,通过组合(可能使用merge
)来自多个页面的数据创建
推荐阅读
- typescript - 是否可以在不编译的情况下验证 TypeScript 文件?
- matlab - Matlab MatConvNet vl_nnconv 函数中的语法错误实现为 Pytorch nn.conv1d 函数
- bash - ansible playbook 能够通过 mutt mail 发送邮件
- apache-kafka - 以循环方式消耗 100 个主题是一种反模式吗?
- python - Discord Bot 未提取嵌入式关键字
- php - 后备资源无法正常工作
- docker - 如何将配置文件传递给 docker 容器?
- python - 从列表中查找最大值并将其分配给饼图 MatPlotLib Python 中的爆炸值
- javascript - 我将如何使用 js 将十进制数转换为十六进制字符串?
- php - 如何获得用户拥有的徽章?