javascript - 使用 rxjs 保持深层结构
问题描述
我有一个数组/对象树,比如
a = [
{x: 1, y: 2},
{x: 22, y: 11}
]
我想遍历这些条目并调用一个休息服务来添加 x 和 y 并创建一个节点结果:
a = [
{x: 1, y: 2, result: 3},
{x: 22, y: 11, result: 33}
]
我在 forkJoin 和其他方面取得了成功,以获得可观察的结果 Observable<Number[]> 但还没有弄清楚如何执行 forkJoin 以使其具有将其放回右侧树的上下文地方。
const results: Observable<Number[]> = from(a).pipe(
mergeMap(calcArray =>
forkJoin(
calcArray.map(calc =>
this.mathService.add(calc.x, calc.y)
)
)
)
)
这个例子很简单,而实际情况要复杂一些,但这就是它的要点。这似乎是一件很基本的事情。
解决方案
我不确定调用 mathService 的结果是什么样的,但我假设它是一个整数。r 是单个调用的结果,因此请修改result: r
以匹配您的实际响应。
combineLatest(a.map(calc => this.mathService.add(calc.x, calc.y))).pipe(
map(results => results.map((r, i) => ({ ...a[i], result: r })))
)
推荐阅读
- sql-server - 如何获取在表的其他列中具有相同值的特定列值
- sql - 重命名后无法访问数据库表
- javascript - 使用 javascript 更改 css 类样式
- asp.net-mvc - DNN 无法访问 DNN Api 控制器中的 POST 方法
- php - 从 vuejs 中的 ajax 返回值
- jquery - 如何将选择列表的选定项目作为参数传递给控制器操作
- google-chrome - “JetBrains IDE Support”正在调试浏览器
- c++ - 构建llvm后找不到clang
- python - AttributeError:模块“_tkinter”没有属性“框架”
- react-native - 如何在 react-native 中只运行一次安装脚本