首页 > 解决方案 > 我将如何组合来自两个 Observable 的结果,但如果一个 observable 的返回比另一个更快,我将如何使用它的结果?

问题描述

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

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

目前我使用 forkjoin 等到两个可观察对象都返回它们的数据。然后我设置绑定属性。虽然这可行,但我想在列定义可用时立即更新它们。用户认为在填充列定义之前,网格看起来像是损坏了。

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

这是我的代码的样子

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);
}

标签: angularobservableag-grid

解决方案


由于听起来您的两个可观察对象都是一次性的,因此我认为最简单的方法是不将它们结合起来。只需单独订阅每个。


推荐阅读