javascript - AngularJS Http 请求同步处理?

标签 javascript angularjs highcharts xmlhttprequest

我在我的 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 在这种情况下会表现得像这样?我以前没有确定过这样的事情。通常,许多请求可以并行发起。

奇怪的行为 enter image description here

正常行为

enter image description here

更新

组件 B 包括一个 Highchart。当我禁用该图表时,请求被发起,但响应未被处理,请求的阻塞似乎消失了。

最佳答案

我相信,我发现了问题。

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

问题是

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

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

关于javascript - AngularJS Http 请求同步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599561/

相关文章:

Javascript 自定义 prng 连续调用产生 0

javascript - 在three.js中渲染多边形

javascript - Protractor id 点击不起作用

angularjs - 带数据输入的表格上的 Angular ng-repeat

javascript - 将 highcharts 转换为波斯语图像

javascript - Google Maps API 显示空白 map

javascript - Hammer.js 滑动停止垂直滚动 ipad

javascript - 如何结合嵌入、替换和ngIf?

javascript - 在悬停时显示 Highcharts 饼图切片名称

javascript - Highcharts:在单个类别中绘制多个值