web-dev-qa-db-ja.com

Angularjsはログ実行タイマータスクを延期しました

Ionicアプリをビルドすると、ブラウザーが長時間実行するタイマータスクを「延期」し、ビューでコントローラーのみでコードを実行するデバッグが非常に難しいという問題に突然遭遇しました1回(コントローラーが明示的に再ロードされる場合でも)。

警告は次のとおりです。

スクロールの滑らかさを改善するための長時間実行タイマータスクの遅延。 crbug.com/574343を参照してください。

私が望んでいること:

  • 警告の理解とその理由
  • そのような警告をデバッグする方法に関するガイダンス。

前もって感謝します。

更新問題の原因としてエラーや警告のみを受信することはありませんが、それから作業バージョンにロールバックしたことに注意することが重要だと感じました。

この作業バージョンには警告が表示されますが、アプリケーションの実行には影響しません。

43
Vince

$ timeoutを使用してタスクを実行している場合は、停止して破棄する必要があります。それ以外の場合、エラーが発生します

例えば:

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

上記のようにタイムアウトを開始した場合、次のようにタイマーを破棄する必要があります。

                    // 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 );
                        }
                    );
7
Vishal Wadhawan

ビューが初めてロードされたときにのみ関数が呼び出されたときに、この問題に直面しました。コンソールでこの警告に気付きましたが、これが1回だけ呼び出される関数に関連するかどうかはわかりません。コントローラーでは、関数呼び出しを「$ ionicView.enter」内に移動し、ビューがロードされるたびに呼び出されます。

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

お役に立てれば。

1

ブラウザの接続の最大数があるように聞こえます。 httpリクエストを、10個のリクエストと10個の個別のhttpリクエストのいずれかを含む単一のリクエストに減らすことができます。

あなたの質問に関する答えは、ブラウザごとの最大httpリクエストの線に沿ったものです。

「サーバー/プロキシごとのデフォルトの同時持続接続の最大数:」

私が正しく仮定している場合もここに答えました- ブラウザでの最大並列http接続?

0
user4573148