我在我的 AngularJS (1.6.3) 应用程序中发现了一个奇怪的行为,我无法解释。
我做什么
我通过 $state.go('.', {path: 'newPath'})
进行动态参数更改,两个兄弟组件在其 $doCheck< 中对该更改使用react
方法如下:
$doCheck() {
if(this.path !== this.$stateParams.path) {
this.path = this.$stateParams.path;
this.handleNewPath(this.path);
}
}
两个组件都执行 Http 请求。我的问题来了。
预期行为
各组件发起的请求不会互相影响。两人确实完全孤立地处理自己的 react 。因此,有时组件 A 首先获得响应,而不是首先处理,有时组件 B 的速度更快。
实际行为
组件A发起请求,耗时约550ms(450个内容下载)。只要内容没有完全下载,就不会执行其他请求。
我的问题
为什么 AngularJS 在这种情况下会表现得像这样?我以前没有确定过这样的事情。通常,许多请求可以并行发起。
正常行为
更新
组件 B 包括一个 Highchart。当我禁用该图表时,请求被发起,但响应未被处理,请求的阻塞似乎消失了。
最佳答案
我相信,我发现了问题。
获取 highcharts 数据的请求不是那个,花了这么长时间,那是我读取控制台时的错误......
问题是
对 highcharts 的响应数据导致 highcharts 开始渲染新数据,因此浏览器重新渲染布局,这是一个同步过程。渲染“同时”出现的每个请求都会在渲染过程之后排队,并且控制台(可能有故障)显示 450 毫秒的内容下载持续时间,这是浏览器渲染 highcharts 所需的实际时间。
所以,我很抱歉提供了误导性信息,但我实际上不确定错误首先来自哪里。
关于javascript - AngularJS Http 请求同步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599561/