2016-05-21 6 views
0

Ich habe eine App, die auf Low-End-PCs sehr langsam ist, und ich habe gerade Batarang heruntergeladen, um die Leistung zu überwachen.Leistungsmonitor der Digest-Zyklus-Ausführung

Auf einer leeren Seite, dass nur eine Kopf- und eine Sidebar hat, sehe ich: enter image description here

Bedeutung, wird der Zyklus ständig läuft. Ich weiß nicht warum, weil ich nur auf die Seite schaue, nicht auf etwas rufe, nichts rühre.

Und in einer anderen AngularJS app (nicht von mir), ich sehe dies: enter image description here

Wenn nichts geändert wird, wird eine Zusammenfassung alle 20-30 Sekunden läuft.

Warum kann so etwas passieren? Gibt es eine Möglichkeit zu überprüfen, welche Beobachter den Digest-Zyklus ausgelöst haben?

EDIT:

Gibt es eine Möglichkeit, alle schmutzigen Beobachter zu drucken, und sehen, was der Ausdruck, die schmutzig ist?

druckte ich einen zufälligen Beobachter:

JSON.stringify(getWatchers()[2]) "{"last":3,"eq":false}"

Es ist nicht der Ausdruck sagt

+0

Überprüfen Sie, ob Sie irgendwo ein $ Timeout haben, debuggen Sie auch alle $ rootScope.apply Anrufe – Marcus

+0

Es sieht aus wie die zweite Karte läuft alle 30 Sekunden, weil es 30 Sekunden dauert zu beenden. – pgreen2

+0

@ pgreen2 nein .. es endet, ansonsten wird es weiterhin angezeigt – Amit

Antwort

0

Digest-Zyklus auf alle Änderungen in Umfang ausgelöst betrieben wird und auf alle Änderungen, die von früheren verdauen verursacht wurden, Zyklus, bis keine Änderungen erkannt werden.

Ex. Es gibt einen Click-Handler im Controller, wo Sie einen Wert ändern können, dann wird diese Änderung möglicherweise woanders beobachtet, so dass Digest erneut ausgeführt wird.

+0

OK, gibt es eine Möglichkeit zu sehen, was geändert wurde? Ich habe alle Beobachter mit 'eq' falsch gedruckt, aber es sagt nicht den Ausdruck – Amit

Verwandte Themen