2016-05-21 1 views
0

J'ai une application, qui est très lente sur les PC bas de gamme, et je viens de télécharger Batarang pour surveiller les performances.Moniteur de performances de l'exécution du cycle digest

Sur une page vide, qui a seulement un en-tête et une barre latérale, je vois ceci: enter image description here

Signification, le cycle est constamment en cours d'exécution. Je ne sais pas pourquoi, puisque je suis en train de regarder la page, ne pas cliquer sur une chose, ne pas bouger une chose.

Et dans une autre application AngularJS (pas de moi), je vois ceci: enter image description here

Quand ne pas changer une chose, un condensé est en cours d'exécution toutes les 20-30 secondes.

Pourquoi une telle chose peut-elle se produire? Existe-t-il un moyen de vérifier quels observateurs ont déclenché le cycle de digestion?

EDIT:

Est-il possible d'imprimer tous les observateurs sales, et voir ce qui est l'expression qui est sale?

J'ai imprimé un guetteur au hasard:

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

Il ne dit pas l'expression

+0

vérifiez si vous avez un timeout $ quelque part, déboguez également tous les appels $ rootScope.apply – Marcus

+0

Il ressemble à la deuxième carte nous courir toutes les 30 secondes, car il faut 30 secondes pour terminer. – pgreen2

+0

@ pgreen2 non ... il se termine, sinon il continuera à le montrer – Amit

Répondre

0

Cycle Digest est en cours d'exécution sur l'ensemble déclenché des changements de périmètre et sur toutes les modifications qui ont été causés par digest précédent cycle, jusqu'à ce qu'il n'y ait aucun changement détecté.

Ex. Il y a un gestionnaire de clic dans le contrôleur où vous changez une valeur, que ce changement pourrait être regardé ailleurs, ainsi le résumé sera exécuté à nouveau.

+0

OK, y a-t-il un moyen de voir ce qui a été changé? J'ai imprimé tous les observateurs avec 'eq' faux, mais il ne dit pas l'expression – Amit