问题描述
我正在创建应用程序的Dashboard组件,其中包含2个子组件,这些子组件也具有子组件(请参见下图)。
所有这些组件都有(8)个HTTP请求,这些请求连接到不同的端点,以便能够显示适当的数据(统计信息)并且很大。现在我遇到了性能不佳的问题。
当用户位于仪表板中且正在加载内容(正在进行HTTP请求)并决定移至另一个组件(例如“用户”页面)时,所有HTTP请求都会被取消,如从浏览器的“调试网络”标签中看到的那样。并且 resolver (获取更新的用户详细信息的UserResolver)http请求以待处理状态出现。
现在的问题是,请求完成并转移到路线更改需要花费一些时间。我已经检查了后端Web服务器日志,尽管浏览器处于待处理状态,但该状态尚未反映到日志中。
我在这里的假设是,Angular不会立即“在路线更改时”启动解析器的http请求。如果是即时的,那么我应该可以从Web服务器上看到日志了吗?
解决方法
答案1:-
在调用多个API时,需要使用 forkJoin RXJS方法。 例如:-
let userData = this.userService.getUserList();
let analyticsData = this.analyticService.getUserAnalyticsData();
...
...
forkJoin([userData,analyticsData]).subscribe(res =>{
this.userDatas = res[0];
this.analyticsDatas = res[1];
}
答案2:-
您必须使用 forkJoin 方法立即订阅API调用。