AngularJS Http Requests是否同步处理?

时间:2017-10-06 06:28:25

标签: javascript angularjs highcharts xmlhttprequest

我在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中启动。

奇怪的行为 enter image description here

正常行为

enter image description here

更新

组件B包含Highchart。当我禁用该图表时,所以请求被启动,但是没有处理响应,请求的阻塞似乎消失了。

1 个答案:

答案 0 :(得分:0)

我相信,我发现了问题。

获取highcharts数据的请求不是那个,花了这么长时间,这是我在阅读控制台时的错误......

问题是

对highcharts的响应数据导致highcharts开始呈现新数据,因此浏览器重新呈现布局,这是一个同步过程。每一个可能来的请求" while"渲染过程后,渲染排队并且控制台(可能有故障)显示内容下载持续时间为450毫秒,这实际上是浏览器渲染高级图所需的时间。

所以,我很抱歉提供了误导性的信息,但实际上我不确定错误来自哪里。

相关问题