2017-10-06 9 views
1

설명 할 수없는 AngularJS (1.6.3) 앱에서 이상한 동작을 발견했습니다.AngularJS Http 요청이 동 기적으로 처리 되었습니까?

$doCheck() { 
    if(this.path !== this.$stateParams.path) { 
    this.path = this.$stateParams.path; 

    this.handleNewPath(this.path); 
    } 
} 

두 구성 요소가 할 HTTP를 요청 :

내가

내가 $state.go('.', {path: 'newPath'}) 두 형제 요소를 통해 동적 매개 변수 변경을 할 무엇처럼 자신의 $doCheck 방법으로 그 변화에 반응한다. 그리고 여기 내 문제가 온다. 구성 요소에 의해 시작

예상되는 동작

요청은 서로 영향을주지 않습니다. 둘 다 완전히 고립 된 응답을 처리합니다. 그래서 때로는 컴포넌트 A가 먼저 응답을 얻습니다. 먼저 처리하는 것보다 때로는 컴포넌트 B가 빠릅니다.

실제 동작

성분 A는 약 550ms (450 콘텐츠 다운로드)을 취하는 요청을 개시한다. 콘텐츠가 완전히 다운로드되지 않은 한 다른 요청은 실행되지 않습니다.

내 질문

이유 AngularJS와이 경우에는 다음과 같이 행동 않습니다? 전에 이런 식으로 결정하지 않았습니다. 일반적으로 paralellel에서 많은 요청을 시작할 수 있습니다.

이상한 행동 enter image description here

정상적인 동작

enter image description here

업데이트

구성 요소 B는 Highchart이 포함되어 있습니다. 해당 차트를 사용하지 않도록 설정하면 요청이 시작되지만 응답은 처리되지 않으므로 요청 차단이 사라졌습니다.

+0

이것은 AngularJS 문제와 유사하며 Highcharts에 직접 연결되지 않았습니다. Highcharts에 문제가 있습니까? –

답변

0

나는 그 문제를 발견했다.

highcharts 데이터가 너무 오래 걸린 하나, 그건 내 실수 콘솔을 읽고 있었다 아니었다 얻을 수있는 요청 ...

문제였다 highcharts 원인에

응답 데이터 highcharts를 사용하여 새 데이터 렌더링을 시작하므로 브라우저는 동기식 프로세스 인 레이아웃을 다시 렌더링합니다. 렌더링 프로세스가 끝난 후 렌더링이 대기중인 모든 요청은 콘솔에 (아마도 오류가 있음) 450ms의 콘텐츠 다운로드 지속 시간을 표시합니다.이 시간은 브라우저가 하이 차트를 렌더링하는 데 필요한 실제 시간입니다.

제공되는 미혹 된 정보에 대해서는 유감이지만 실제로 처음 오류가 발생한 위치를 알 수는 없습니다.