Angular HTTP Client несколько вызовов - PullRequest
0 голосов
/ 01 июня 2018

Какой лучший способ управлять подписчиками по угловому HTTP-запросу в этом случае:

У меня есть кнопка, которая выполняет запрос get и затем печатает результат:

Шаблон

<button type="button" class="btn btn-primary" (click)="helloWorld()">Mod1</button>

Компонент

constructor(private heroService: HeroService) { }

helloWorld() {
    this.heroService.getUser().subscribe(data => console.log(data));
}

Сервис

constructor(private _http: HttpClient) { }

getUser() {
    return this._http.get("https://randomuser.me/api/");
}

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

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

1 Ответ

0 голосов
/ 01 июня 2018

В вашем компоненте у вас может быть атрибут пользователя, который вы проверяете перед вызовом службы:

user: any;

constructor(private heroService: HeroService) { }

helloWorld() {
    if (!this.user) {
        this.heroService.getUser().subscribe(data => this.user = data);
    }
}

PS: однократные вызовы Http не вызывают утечек памяти или проблем с производительностью, поэтомувам не обязательно отписываться от них.Это потоковая подписка, которая может негативно повлиять на производительность вашего приложения.(пример: управление значением формыChanges)

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