Призыв к веб-API становится все медленнее и медленнее с каждым вызовом в приложении Angular 7 - PullRequest
0 голосов
/ 05 марта 2019

Приложение My Angular c # выполняет вызов веб-API и запускает сохраненный процесс.Часть приложения на C # выполняется быстро, но загрузка контента становится все медленнее и медленнее с каждым вызовом.

Taken from chrome console

У меня есть служба Angularкоторый вызывает веб-API;

getInvestorsToFunds(params): Observable<InvestorToFund[]> {  
    let body = JSON.stringify({ params });  
    return this.http.post<InvestorToFund[]>(this.baseUrl + 'api/Investor/getInvestorsToFunds', body)   
     .pipe(catchError(this.handleError));
 }

И я называю это из моего компонента;

 let x = forkJoin(  
  this.investorService.getInvestorsToFunds(params)
).subscribe(t => { 
  this.investorToFunds = t[0] as InvestorToFund[]; 
});

Есть идеи, почему каждый вызов становится все медленнее и медленнее?

Ответы [ 3 ]

0 голосов
/ 06 марта 2019

Хорошо, я докопался до сути и опубликую свой ответ для любой бедной души, которая сталкивается с той же проблемой.

Я прочитал утечки памяти и инструменты Chrome для создания снимков.Конечно же, с каждым посещением страницы мое использование памяти увеличивалось с течением времени.Это означало, что для моего приложения было доступно меньше памяти, что ограничило ввод данных из моего API.

Оказалось, что один из моих плагинов вызывал проблему - https://github.com/inorganik/countUp.js-angular2. У меня была версия 6 -когда я обновился до версии 7, это прекратило утечки памяти, и вызов API выполнялся примерно через 3 секунды каждый раз, независимо от того, сколько страниц я нажал.

Полезные статьи;

https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/ https://developers.google.com/web/tools/chrome-devtools/memory-problems/

0 голосов
/ 07 марта 2019

Это не утечка памяти.Вы должны отписаться от подписок

class A implements OnDestroy {
    protected ngUnsubscribe: Subject<void> = new Subject<void>();

    ngOnDestroy() {
        this.ngUnsubscribe.next();
        this.ngUnsubscribe.complete();
    }

И при КАЖДОЙ подписке

  this.subscription.takeUntil( this.ngUnsubscribe ).subscribe( _ => _ );

Таким образом, когда вы уходите от компонента, запускается ngOnDestroy, и все ваши подписки очищаются отпамять.

PS.У меня была такая же проблема, когда я только начинал.Никаких проблем после того, как я это реализовал, все работает как масло.

0 голосов
/ 05 марта 2019

Есть идеи, почему каждый вызов становится все медленнее и медленнее?

Время, которое вы видите, - это время отклика сервера.Бэкэнд становится все медленнее и медленнее, и любые изменения в коде внешнего интерфейса не сделают его быстрее.

Фикс

Фикс бэкэнда ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...