遍历数组并将结果映射到rxjs的可观察对象

时间:2020-03-19 10:04:14

标签: typescript rxjs

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

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

显然这是行不通的,因为我需要以可观察的方式返回完整的Tree []。如何使用RXJS解决此问题?

1 个答案:

答案 0 :(得分:1)

const obj = level1.level2[level1.ID][P1];
checker = ['o_1', 'o_2', 'o_3', 'o_4'].every(key => obj[key] === undefined); 

如果您不想并行调用from(trees).pipe( mergeMap(tree => this.getFruits(tree).pipe( map(fruits => { tree.fruits = fruits; return tree; }) ) ), toArray() ) ,则将this.getFruits替换为mergeMap