2017-10-06 1 views
1

Ich habe in meiner App AngularJS (1.6.3) ein seltsames Verhalten entdeckt, das ich nicht erklären kann.AngularJS Http Requests synchron verarbeitet?

Was ich tun

Ich habe eine dynamische Parameteränderung über $state.go('.', {path: 'newPath'}) und zwei Geschwister Komponenten reagieren auf diese Veränderung in ihrem $doCheck Verfahren wie:

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

    this.handleNewPath(this.path); 
    } 
} 

Beide Komponenten tun Http-Anfragen. Und hier kommt mein Problem.

erwartetes Verhalten

Die von den Komponenten initiiert Anfragen nicht gegenseitig beeinflussen. Beide behandeln ihre Antworten völlig isoliert. Manchmal erhält die Komponente A zuerst ihre Antwort, dann die erste, manchmal die Komponente B.

Actual Verhalten

Komponente A initiiert eine Anfrage, die etwa 550ms (450 Content Download) erfolgt. Solange der Inhalt nicht vollständig heruntergeladen ist, wird keine andere Anfrage ausgeführt.

Meine Frage

Warum wie dies funktioniert AngularJS in diesem Fall verhalten ?? So etwas habe ich noch nicht bestimmt. Normalerweise können viele Anfragen parallel gestartet werden.

Seltsames Verhalten enter image description here

Normales Verhalten

enter image description here

aktualisieren

Komponente B enthält eine Highchart. Wenn ich das Diagramm deaktiviere, also die Anfragen initiiert werden, aber die Antwort nicht behandelt wird, ist die Blockierung der Anfrage scheinbar weg.

+0

Das sieht wie ein AngularJS-Problem aus und ist nicht direkt mit Highcharts verbunden. Hast du Probleme mit Highcharts? –

Antwort

0

Ich glaube, dass ich das Problem gefunden habe.

Die Anforderung die highcharts Daten zu erhalten, nicht derjenige war, der so lange gedauert hat, dass mein Fehler der Konsole ...

Lesen wurde Ursachen

Das Problem war

Die Antwortdaten zu highcharts Highcharts, um mit dem Rendern der neuen Daten zu beginnen. Daher gibt der Browser das Layout neu, was ein synchroner Prozess ist. Jede Anfrage, die während des Renderns kommen könnte, wird nach dem Rendern in die Warteschlange gestellt und die Konsole (möglicherweise fehlerhaft) zeigt eine Downloaddauer von 450ms an, was der Zeit entspricht, die der Browser zum Rendern von Highcharts benötigt.

So, es tut mir leid für die bereitgestellten Informationen, aber Leeseite war ich nicht sicher, woher der Fehler an erster Stelle kommen.

Verwandte Themen