AngularJS Http请求同步处理?
问题描述:
我在我的AngularJS(1.6.3)应用程序中发现了一个奇怪的行为,我无法解释。AngularJS Http请求同步处理?
我做什么
我通过$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发起请求,这需要大约550ms(450内容下载)。只要内容没有完全下载,就不会执行其他请求。
我的问题
为什么AngularJS这样的表现在这种情况下?我以前没有确定过这样的事情。通常,许多请求可以在并行中启动。
正常行为
更新
组分B包括Highchart。当我禁用该图表时,所以请求被启动,但不处理响应,请求的阻止似乎没有了。
答
我相信,我发现了这个问题。
得到highcharts数据不是一个,那花了这么长时间,这是我的错误读控制台的请求......
问题是
的响应数据highcharts原因highcharts开始渲染新数据,因此浏览器会重新渲染布局,这是一个同步过程。每个可能在渲染过程中发出的请求在渲染过程之后排队,并且控制台(可能有故障)显示的内容下载持续时间为450毫秒,实际上是浏览器渲染高分辨率所需的时间。
因此,我很抱歉提供了有误导性的信息,但实际上我并不确定错误来自哪里。
这看起来像一个AngularJS问题,并不直接连接到Highcharts。你对Highcharts有任何问题吗? –