angular - 角度解析器的性能问题
问题描述
我正在为我们的应用程序创建一个仪表板组件,其中包含 2 个子组件,这些子组件也有子组件(见下图)。
所有这些组件都有 (8) 个连接到不同端点的 HTTP 请求,以便能够显示适当的数据(统计数据)并且相当大。现在我遇到了性能不佳的问题。
当用户在仪表板中并且正在加载内容时(正在加载 Http 请求)并决定移动到另一个组件(比如说用户页面),从浏览器的调试网络选项卡中可以看出,所有 HTTP 请求都会被取消。解析器(获取更新的用户详细信息的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 调用。
推荐阅读
- php - 没有从数据库中获取下拉元素
- javascript - 图层滑块导航在wordpress中的IOS上不起作用
- c - 从文件中捕获用逗号分隔的带引号的字符串
- jsonschema - RAML:对具有不同属性的 GET 和 POST 使用相同的数据类型
- java - 如何在spring web 4.3中持久化http请求销毁对象
- .htaccess - 重写 url - Rediriger sans index.php
- google-apps-script - 如何使用谷歌脚本在谷歌文档中创建一个超链接数组(或一个长字符串)
- jquery-ui - 在 JQuery UI 日期选择器中将一周的开始日期设置为星期五
- sql - sql中的内联和外联约束有什么区别吗?
- java - android.view.InflateException:二进制 XML 文件第 27 行:android.support.design.widget.TextInputEditText 无法转换为 android.view.ViewGroup