web-dev-qa-db-fra.com

Angularjs a reporté la ou les tâches du minuteur d'enregistrement de journal

En construisant une application ionique, j'ai soudainement rencontré un problème que je trouve vraiment difficile à résoudre, lorsque le navigateur "reporte" de longues tâches de minuterie, ce qui oblige mes vues à exécuter le code dans leur contrôleur une seule fois (même lorsque le contrôleur est explicitement rechargé ).

Avertissement est:

Tâches différées de longue durée pour améliorer le lissage du défilement. Voir crbug.com/574343.

Ce que je suis après:

  • Une compréhension de l'avertissement et pourquoi il se produit
  • Tout conseil sur la façon de procéder pour déboguer un tel avertissement.

Merci d'avance.

Mise à jour J’ai pensé qu’il était important de noter que bien que je ne reçoive jamais d’erreurs et que seuls des avertissements soient à l’origine de mes problèmes, je suis depuis revenu à une version opérationnelle.

Des avertissements apparaissent toujours dans cette version de travail mais n'affectent pas l'exécution de mon application. 

43
Vince

eh bien, au cas où vous feriez des tâches en utilisant $ timeout, vous devez les arrêter et les détruire sinon elles créeraient l'erreur que vous avez dite 

pour par exemple:

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

si vous commencez un timeout 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 );
                        }
                    );
6
Vishal Wadhawan

J'ai rencontré ce problème lorsque la fonction a été appelée uniquement lors du premier chargement de la vue. J'ai remarqué cet avertissement dans la console mais je ne suis pas sûr que cela soit lié à une fonction appelée une seule fois . Dans le contrôleur, j'ai déplacé mon appel de fonction dans "$ ionicView.enter" et il est appelé chaque fois que l'affichage est chargé.

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

J'espère que cela t'aides.

1

On dirait que vous avez peut-être un nombre maximum de connexions dans votre navigateur. Vous voudrez peut-être réduire vos demandes http à une seule demande contenant quelque chose qui serait 10 demandes contre 10 demandes http distinctes.

La réponse à votre question se situe entre le nombre maximal de requêtes http par navigateur. 

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

Également répondu ici si je suppose correctement - Nombre maximal de connexions http parallèles dans un navigateur?

0
user4573148