angular - 我将如何组合来自两个 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);
}
解决方案
由于听起来您的两个可观察对象都是一次性的,因此我认为最简单的方法是不将它们结合起来。只需单独订阅每个。
推荐阅读
- algorithm - 以更算法的方式进行最大值符号变量替换
- java - Octave的“javaMethod”的困难
- microsoft-cognitive - 为什么在尝试创建 QnA Maker 服务时禁用所有定价层?
- php - 如何使用 PHP 从 .frm 文件中获取表结构?
- c# - 无法将类型 float 隐式转换为 float[]
- css - matTooltip 在 ios 上不起作用
- java - IO 错误:网络适配器无法建立给定的连接错误
- python - 获得更好的时间复杂度
- php - 沙盒 Square Checkout API 脚本中未定义 getId() 方法
- javascript - 视差滚动在移动设备上不起作用