Задачи таймера отложенного таймера отложенных операций Angularjs

Построение приложения Ionic и внезапно сталкивается с проблемой, которую мне сложно отлаживать, когда браузер "откладывает" длительные задачи таймера, заставляя мои представления выполнять код в своих контроллерах только один раз (даже если контроллер явно перезагружается).

Предупреждение:

Отложенная задача с большим сроком действия, чтобы улучшить гладкость прокрутки. См. Crbug.com/574343.

Что мне нужно:

  • Понимание предупреждения и почему это происходит.
  • Любые указания относительно того, как отлаживать такое предупреждение.

Спасибо заранее.

Обновление Я чувствовал, что важно отметить, что, хотя я никогда не получаю ошибок и только предупреждения в качестве причины для своих проблем, я с тех пор откатился к рабочей версии.

В этой рабочей версии по-прежнему появляются предупреждения, но не влияет на работу моего приложения.

Ответ 1

Хорошо, если вы выполняете задания с использованием $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 );
                        }
                    );

Ответ 2

Я столкнулся с этой проблемой, когда функция вызывалась только при первом загрузке представления. Отметили это предупреждение в консоли, но не уверены, связано ли это с вызовом функции только один раз. В контроллере я переместил вызов своей функции внутри "$ ionicView.enter", и он получает вызов при каждом просмотре представления.

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

Надеюсь, что это поможет.

Ответ 3

Похоже, что у вас может быть максимальное количество подключений в вашем браузере. Возможно, вы захотите уменьшить ваши HTTP-запросы до одного запроса, который содержит что-то, что будет 10 запросов против 10 отдельных HTTP-запросов.

Ответ на ваш вопрос - это что-то вроде максимального HTTP-запроса на браузер.

"Максимальное количество одновременных постоянных подключений по умолчанию для каждого сервер/прокси:"

Также ответил здесь, если я правильно предполагаю - Максимальное количество параллельных HTTP-соединений в браузере?