首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何组合两个可观察对象的结果,但如果一个可观察对象的结果比另一个更早返回,我又如何使用它呢?

我如何组合两个可观察对象的结果,但如果一个可观察对象的结果比另一个更早返回,我又如何使用它呢?
EN

Stack Overflow用户
提问于 2020-04-09 05:34:51
回答 2查看 99关注 0票数 2

我有两个从Angular 8服务返回的可观察对象。一个获取网格的列定义,另一个获取网格数据。我使用Ag-grid绑定到行数据和列定义的两个组件属性。

我需要这两个数据集来计算出每列中的最新日期。返回网格数据的时间总是比返回列定义的时间长得多。列定义几乎是即时的。网格数据大约需要10秒。

目前,我使用forkjoin来等待,直到两个可观察对象都返回它们的数据。然后设置绑定的属性。在此过程中,我希望在我的列定义可用时立即更新它们。在填充列定义之前,用户会认为网格看起来像是被破坏了。

我可以重用列定义observable的结果,而不需要再次调用observable吗?

下面是我的代码

代码语言:javascript
运行
复制
let gridDataObservable= this.gridDataService.getItems();
let columnDefinitionObservable = this.columnDefinitionService.getItems();

forkJoin([gridDataObservable,columnDefinitionObservable]).subscribe(results => {
  this.rowData= results[0];
  this.columnDefs = results[1];
  this.latestDates = GetDates(this.rowData,this.columnDefs);
}
EN

回答 2

Stack Overflow用户

发布于 2020-04-09 08:06:06

既然听起来你的两个观察点都是一次性的,我认为最简单的事情就是不要将它们组合在一起。只需单独订阅每一个。

票数 0
EN

Stack Overflow用户

发布于 2020-04-09 14:08:13

代码语言:javascript
运行
复制
const columnDefinitionObservable = this.columnDefinitionService.getItems();

const gridDataSubject = new BehaviorSubject<YourType|undefined>(undefined);
this.gridDataService.getItems().subscribe(gridDataSubject)

const target$ = combineLatest(columnDefinitionObservable, gridDataSubject)

为gridData提供一个未定义的初始值。如果首先触发columnDefinitionObservable,您将获得column,undefined,然后column,gridData

如果gridData首先触发,您将直接获取column,gridData。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61110417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档