rxjs - RxJs:使用另一个可观察对象的发射过滤可观察对象中的内容
问题描述
我有一个Observable<Project>
返回对象数组的。Observable<boolean>
我需要根据使用对象 ID 的请求构造来过滤此数组。
下面的代码行中有一些东西,但我需要数组中的实际对象,而不是我当前映射它们的布尔数组。我猜想在最初的 observable 加入两个值之后我可以使用 zip 行中的一些东西,这样我就可以在过滤器中使用它们。
this.projectService.getCurrentUserProjects().pipe(
mergeAll(),
mergeMap((project) => this.getProjectConditions(project.id)),
filter((condition) => condition),
toArray()
)
我目前的线索是:
- 一种让我在过滤层之后访问由 mergeAll 发出的值的方法,以便我将其收集到数组中。
- 一种让我做一个 concatMap 的方法,它返回一个带有两个值的 observable,这样我就可以在过滤器层使用它。
- 某种接受 Observable 的过滤器运算符。
解决方案
考虑让内部map
返回两个值(数据和条件)作为数组,如下所示:
this.projectService.getCurrentUserProjects().pipe(
mergeAll(),
mergeMap((project) => this.getProjectConditions(project.id).pipe(map(condition => [project, condition]))),
filter(([,condition]) => condition), // <= only destruct second parameter
map(([project]) => project), // <= only destruct first parameter
toArray()
)
推荐阅读
- php - 如何在 Ubuntu 14.04 上安装/启用 PHP 7.0 zip 扩展?
- flutter - 没有为类定义方法“TweenAnimationBuilder”
- excel - 计算列中的时间差并将其保存为具有多个电子表格的许多 excel 文件,PYTHON
- angular - 订阅可观察者不会执行
- javascript - 在 php 中使用 LocalStorage 变量
- nginx - Kubernetes 入口更新与部署
- scala - 将单列划分为多列的最佳方法 Dataframe Spark Scala
- charts - 第一步的谷歌阶梯面积图错误
- environment-variables - Terraform 版本更新
- php - 如何使用 ACF 在自定义页面模板中正确显示照片?