【问题标题】:iterate over array and map result to an observable with rxjs使用 rxjs 遍历数组并将结果映射到可观察对象
【发布时间】:2020-06-30 10:46:50
【问题描述】:

我想建立一个看起来像这样的树对象列表:{name: string, fruits: Fruit[]}[] 我从后端得到了带有空水果数组的树,这是无法更改的。因此我需要单独取水果。我想创建一个方法,它返回一个完整的树对象(填充的水果数组)作为可观察对象,并将树数组作为参数。这是我尝试过的:

getTreesWithFruits(trees: Tree[]): Observable<Tree[]> {
    trees.forEach(tree => {
        this.getFruits(tree).subscribe(fruits => {
            tree.fruits = fruits;
        });
    }),
}

显然这不起作用,因为我需要将完整的 Tree[] 作为可观察对象返回。如何用 RXJS 解决这个问题?

【问题讨论】:

    标签: typescript rxjs


    【解决方案1】:
    from(trees).pipe(
      mergeMap(tree => 
        this.getFruits(tree).pipe(
          map(fruits => {
            tree.fruits = fruits;
            return tree;
          })
        )
      ),
      toArray()
    )
    

    如果您不想并行调用this.getFruits,请将mergeMap 替换为concatMap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2018-07-25
      相关资源
      最近更新 更多