rxjs:结合可观察到的结果,同时已经使用异步管道显示了第一个

Devqon

用rxjs进行角度显示以显示第一个可观察物的结果并在其他可观察物完成后合并数据的最佳方法是什么?

例:

@Component({
    selector: 'app-component',
    template: `
<div *ngFor="let group of groups$ | async">
    <div *ngFor="let thisItem of group.theseItems">
        ...
    </div>
    <div *ngFor="let thatItem of group.thoseItems">
        ...
    </div>
</div>
`
})
export class AppComponent implements OnInit {
    ...
    ngOnInit() {
        this.groups$ = this.http.get<IThisItem[]>('api/theseItems').pipe(
            map(theseItems => {
                return theseItems.groupBy('groupCode');
            })
        );

        // combine these results? This operation can take 5 seconds
        this.groups$$ = this.http.get<IThatItem[]>('api/thoseItems').pipe(
            map(thoseItems => {
                return thoseItems.groupBy('groupCode');
            })
        );
    }
}

我了解可以通过同时订阅和合并结果来完成。但是是否可以为此使用管道运算符并使用async管道?

卡萨拉斯(Athanasios Kataras)

我认为您可以使用combineLatestrxjs运算符。这可能意味着您也需要稍微更改模板中的处理方式。

我无法使用您的示例,因为我不知道您的get函数,但基本上适用相同的原理。

在此处查看stackblitz的示例:

export class AppComponent  {

  private firstObservable = of([{name: 'name1'}]).pipe(startWith([]));
  private secondObservable = of([{name: 'name2'}]).pipe(startWith([]));

  combined = combineLatest(this.firstObservable, this.secondObservable).pipe(
        map(([firstResult, secondResult]) => {
          return [].concat(firstResult).concat(secondResult)
        }) 
   );
}

HTML输出:

<span *ngFor="let item of combined | async">{{item.name}}<span>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RxJava合并订阅者仅从第一个可观察到的结果中获取结果

* ng如果异步管道与另一个可观察到的角度合并

可观察到的第一个元素的特殊处理

将一个可观察到的RxJS结果传递到下一个可观察到的序列中

异步管道未显示可观察到的数据

RxJS结合两个可观察到的

RXJS首先发出结果,然后等待另一个可观察到的结果

修改第一个可观察结果到第二个可观察结果并返回更新的结果

将MergeMap与从另一个可观察到的数据数组一起使用-RxJs Angular

使用最后一个中的第一个结果依次运行3个可观察物

RxJs可观察到而没有下一个事件?

当另一个发出值时,可观察到RxJS错误

rxjs可观察到的debounceTime内部下一个忽略

RxJava:等待另一个可观察到的结果

如果第二个立即失败,则ReactiveX concat不会从第一个可观察到的位置生成onNext

使用后两个调用中第一个调用的响应,Angular / RXJS嵌套可观察对象

RxJava可观察到的最后一个状态

我想将ID添加到div中,与敲除中可观察到的数组的第一个值相同

选择第一个观察到的数据并利用变异

通过异步管道重新分配可观察到的

可观察到的异步管道未返回值

RXJS 结合了一个可观察的表

管道RxJS可观察到的现有主题

RXJS可观察到的删除管道运算符

可观察到的异步

可观察到的rxJs回调是异步的

在 rxjs 中多次'管道'一个可观察的

将可观察的结果与其管道的结果合并为一个可观察的结果

使用 ngIf 异步管道可观察到茉莉花大理石测试