43 votes

Tâche(s) de temporisation pour le journal différé d'Angularjs

Je construis une application Ionic et je suis soudainement tombé sur un problème que je trouve vraiment difficile à déboguer. Le navigateur "reporte" les tâches de temporisation à long terme, ce qui fait que mes vues n'exécutent le code de leurs contrôleurs qu'une seule fois (même lorsque le contrôleur est explicitement rechargé).

L'avertissement est :

Report d'une ou plusieurs tâches de temporisation à long terme pour améliorer la fluidité du défilement. Voir crbug.com/574343.

Ce que je cherche :

  • Une compréhension de l'alerte et de sa raison d'être
  • Avez-vous des conseils sur la façon de déboguer un tel avertissement ?

Merci d'avance.

Mise à jour J'ai estimé qu'il était important de noter que, bien que n'ayant jamais reçu d'erreurs et seulement des avertissements comme cause de mes problèmes, j'ai depuis lors rétabli une version fonctionnelle.

Cette version de travail présente toujours des avertissements mais n'affecte pas le fonctionnement de mon application.

6voto

Vishal Wadhawan Points 853

Si vous effectuez des tâches en utilisant $timeout, vous devez les arrêter et les détruire, sinon elles créeront l'erreur que vous avez mentionnée.

par exemple :

var timer = $timeout(
                        function() {
                            console.log( "Timeout executed", Date.now() );
                        },
                        2000
                    );

si vous lancez un timer comme ci-dessus, vous devez détruire le timer comme suit :

                    // When the DOM element is removed from the page,
                    // AngularJS will trigger the $destroy event on
                    // the scope. This gives us a chance to cancel any
                    // pending timer that we may have.
$scope.$on(
                        "$destroy",
                        function( event ) {
                            $timeout.cancel( timer );
                        }
                    );

1voto

J'ai rencontré ce problème lorsque la fonction n'a été appelée que la première fois que la vue a été chargée. J'ai remarqué cet avertissement dans la console mais je ne suis pas sûr que cela soit lié au fait que la fonction n'est appelée qu'une seule fois. Dans le contrôleur, j'ai déplacé l'appel de ma fonction dans "$ionicView.enter" et elle est appelée chaque fois que la vue est chargée.

$scope.$on('$ionicView.enter', function () {
            callMyFunction();
        });

J'espère que cela vous aidera.

1voto

Il semble que le nombre de connexions de votre navigateur soit maximal. Vous pouvez réduire vos requêtes http à une seule requête qui contient quelque chose, ce qui correspondrait à 10 requêtes plutôt qu'à 10 requêtes http distinctes.

La réponse à votre question est quelque chose comme une demande http maximale par navigateur.

"Nombre maximal de connexions persistantes simultanées par défaut par serveur/proxy :"

La réponse se trouve également ici, si j'ai bien compris - Nombre maximal de connexions http parallèles dans un navigateur ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X