Как вызвать цепную подписку (RxJs) в ионных событиях - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть класс BaseDataService, и у него есть метод для запросов HttpGet.

protected Get<TResponse>(
    endPoint: string
  ): Observable<BaseResponse<TResponse>> {
    return this.httpClient.get<TResponse>(this.baseUrl + endPoint).pipe(
      map(data => {
        const response = <BaseResponse<TResponse>>{};
        response.Data = data;
        response.Errors = [];
        response.HasError = false;
        return response;
      }),
      catchError(errors => {
        const response = <BaseResponse<TResponse>>{};
        response.Errors = [];
        response.Errors.push(errors.error);
        response.HasError = true;
        return of(response);
      })
    );
  }

И у меня есть LocationDeviceDataService, который расширяет BaseDataService, и у него есть метод Get LocationDevices

 getAll() {
    return this.Get<BasePaginatedResponse<LocationDeviceResponse>>(
      EndPoints.GET_LOCATIONDEVICES
    );
  }

И я вызываю этот метод внутри события,

this.events.subscribe("connection-type:wifi", () => {
        this.locationDataService.getAll().subscribe(t => {
          localStorage.setItem('LOCATION_DEVICES', JSON.stringify(t.Data.items))
        });
      });

Все нормально при первом вызове, но когда другие события (https://ionicframework.com/docs/api/util/Events/)publish для "тип соединения: wifi" this.locationDataService.getAll (). Подписаться возвращает ответы в 1, 2, 4 раза медленнее.

Я уверен, что ничего плохого в бэк-энде.

Стоит ли отписаться или завершить подписку? Если я должен, у меня нет никакого триггера для этого.

Не могли бы вы сказать мне, что не так в этом коде?

1 Ответ

0 голосов
/ 06 ноября 2018

Я решил свою проблему.

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

...