webentwicklung-frage-antwort-db.com.de

Angularjs verzögerte Protokollierungstimer-Task (s)

Beim Erstellen einer Ionic-App ist plötzlich ein Problem aufgetaucht, das für mich wirklich schwer zu debuggen ist, wenn der Browser lang laufende Timer-Tasks "aufschiebt", was dazu führt, dass meine Ansichten den Code in ihren Controllern nur einmal ausführen (selbst wenn der Controller explizit geladen wird ).

Warnung ist:

Zeitlich verzögerte Timer-Task (s) zur Verbesserung der Laufruhe. Siehe crbug.com/574343.

Was ich suche:

  • Ein Verständnis der Warnung und warum sie auftritt
  • Eine Anleitung, wie Sie eine solche Warnung debuggen können.

Danke im Voraus.

Update Ich war der Meinung, dass es wichtig war zu beachten, dass ich, obwohl ich nie Fehler und nur Warnungen als Ursache für meine Probleme erhalten habe, auf eine funktionierende Version zurückgesetzt wurde.

In dieser Arbeitsversion werden immer noch Warnungen angezeigt, die Ausführung der Anwendung wird jedoch nicht beeinflusst. 

43
Vince

gut für den Fall, wenn Sie Aufgaben mit $ timeout ausführen, müssen Sie sie stoppen und zerstören, andernfalls würden sie den von Ihnen angegebenen Fehler erzeugen 

für zB:

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

wenn Sie wie oben beschrieben ein Timeout starten, müssen Sie den Timer wie folgt zerstören: 

                    // 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

Dieses Problem trat auf, als die Funktion nur beim ersten Aufruf der Ansicht aufgerufen wurde. Diese Warnung in der Konsole wurde bemerkt, aber es ist nicht sicher, ob dies mit der Funktion zusammenhängt, die nur einmal aufgerufen wird .. Im Controller habe ich meinen Funktionsaufruf in "$ ionicView.enter" verschoben, und er wird jedes Mal aufgerufen, wenn die Ansicht geladen wird.

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

Hoffe das hilft.

1

Klingt, als hätten Sie möglicherweise eine maximale Anzahl von Verbindungen in Ihrem Browser. Möglicherweise möchten Sie Ihre http-Anforderungen auf eine einzelne Anforderung reduzieren, die etwas enthält, das 10 Anforderungen gegenüber 10 separaten HTTP-Anforderungen wäre.

Die Antwort auf Ihre Frage entspricht der maximalen http-Anfrage pro Browser. 

Msgstr "Maximale Anzahl gleichzeitiger persistenter Standardverbindungen pro Server/Proxy:"

Auch hier beantwortet, wenn ich - Max parallele http-Verbindungen in einem Browser richtig voraussetze?

0
user4573148