AngularJs memoryLeak при маршрутизации - PullRequest
0 голосов
/ 15 января 2019

У меня есть приложение AngularJs с 3 экранами, поэтому приложение выполняет маршрутизацию между этими 3 экранами каждые X секунд, используя компонент ui-router.

$stateProvider
    .state("page", {
        url: "/:pageId/:pageType",
        template: pageTemplate,
        controller: "contentCtrl",
        resolve: {
            contentSolver: function (resolveService, $stateParams) {
                resolveService.solveData($stateParams.pageId, $stateParams.pageType);
            }
        }
    })

А

  $state.go('page', {
                    pageId: $stateParams.pageId,
                    pageType: pageType
                });

У меня есть служба под названием resolService, где я получаю содержимое страницы с сервера, а затем передаю содержимое контроллеру.

При каждом изменении экрана происходит утечка памяти (если я не переключаюсь между страницами, утечки памяти нет).

Я узнал это:

При каждом изменении экрана происходит утечка памяти (если я не переключаюсь между страницами, утечки памяти нет).

На каждом переключателе я делаю запрос на получение некоторых изображений, но если я дважды переключаюсь на одной и той же странице, я получаю одинаковые изображения 2 раза и т. Д.

Есть ли способ удалить старые?

Picture

Вкладка «Производительность» в инструментах Chrome Dev.

Количество узлов быстро увеличивается, что мне нужно проверить в этом случае?

Chrome Dev Performance

Есть какой-нибудь инструмент, который я могу использовать, чтобы найти утечку? Я пробовал расширения Chrome, но безуспешно, Dynatrace, но они поддерживают только nodejs.

Если у вас есть идеи, пожалуйста, дайте мне знать :), спасибо!

1 Ответ

0 голосов
/ 15 января 2019

вы маршрутизируете эти страницы с x секундами, вам нужно уничтожить функцию, которая вызывает переход, который вы используете (то есть, переход на onSuccess, onStart) уничтожить, что после запуска перехода, потому что, это будет продолжать слушать на каждом & каждом переходе, который приводит к множественному появлению ответа.

$scope.$on('$destroy',functionName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...