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