首页 > 解决方案 > 角度解析器的性能问题

问题描述

我正在为我们的应用程序创建一个仪表板组件,其中包含 2 个子组件,这些子组件也有子组件(见下图)。

在此处输入图像描述

所有这些组件都有 (8) 个连接到不同端点的 HTTP 请求,以便能够显示适当的数据(统计数据)并且相当大。现在我遇到了性能不佳的问题。

当用户在仪表板中并且正在加载内容时(正在加载 Http 请求)并决定移动到另一个组件(比如说用户页面),从浏览器的调试网络选项卡中可以看出,所有 HTTP 请求都会被取消。解析器(获取更新的用户详细信息的UserResolver)http 请求带有待处理状态。

现在的问题是请求完成并移动到路由更改需要一段时间。我检查了后端 Web 服务器日志,虽然状态在浏览器中处于未决状态,但尚未反映到日志中。

我的假设是,Angular 不会立即“在路由更改时”启动解析器的 http 请求。如果它是即时的,那么我应该从 Web 服务器日志中看到,对吗?

标签: angularangular-httpclient

解决方案


答案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 调用。


推荐阅读