Правильно ли сделан индикатор загрузки?

238
07 января 2018, 07:54

У меня есть приложение, каждая страница которого состоит из нескольких компонентов. после некоторого события происходит большой асинхронный запрос на сервер и в это время желательно выводить значок загрузки. Я эту задачу решил, но проблема в том, что в моём способе происходит 3 запроса в секунду. Это наводит меня на мысль о, том, что моё решение неудачное.

у меня есть глобальный сервис:

private globalVars: Object = {};

  getVar(key) {
    return this.globalVars[key];
  }
  setVar(key, value): void {
    this.globalVars[key] = value;
  }
  getLoading(): Observable<any> {
    return Observable.timer(0, 300).map(() => {
      return this.globalVars['isLoading'];
    });
  }

В корневом шаблоне есть разметка значка загрузки:

<div class="loading" *ngIf="isLoading">Loading...</div>

Вот стили для неё:

.loading{
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: #fff;
  opacity: 0.5;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}

Таким образом в компоненте, который делает асинхронный запрос я применяю следующую тактику:

this.globalVarsService.setVar('isLoading', true);
--- ajax request ---
this.globalVarsService.setVar('isLoading', false);

Скажите пожалуйста, можно ли в getLoading() сервиса избавиться от трёх запросов в течение одной секунды? Или, возможно, это нормальная практика?

READ ALSO
Как отключать и включать slick-carousel на разных разрешениях?

Как отключать и включать slick-carousel на разных разрешениях?

Использую слайдер slick-carouselЧасто бывает необходимо отключать слайдер на определенных разрешениях, помогает в этом такая конструкция:

836
PayPal мультивалютный приём платежей

PayPal мультивалютный приём платежей

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

222
Получение записи по id

Получение записи по id

Создал не большой ProductList, заполнил таблицу данными, отобразил их на общей страницыНе могу получить единственную запись по ключу

1994
Как разбить сложную строку на массив?

Как разбить сложную строку на массив?

Нужно распилить строку на массивСтрока:

285