ioni c 4 LoadingController не закрывается после возврата API - PullRequest
1 голос
/ 26 января 2020

Я использую http-перехватчик, чтобы добавить loadingController ко всем вызовам API, подобным этому

 intercept(
    request: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    const token = "my-token-string-from-server";

    if (token) {
      request = request.clone({
        setHeaders: {
          Authorization: token
        }
      });
    }

    if (!request.headers.has("Content-Type")) {
      request = request.clone({
        setHeaders: {
          "content-type": "application/json"
        }
      });
    }

    request = request.clone({
      headers: request.headers.set("Accept", "application/json")
    });
    this.presentLoading();
    return next.handle(request).pipe(
      map((event: HttpEvent<any>) => {
        if (event instanceof HttpResponse) {
          console.log("event--->>>", event);
          //this.hideLoader();
        }
        this.hideLoader();
        return event;
      }),
      catchError((error: HttpErrorResponse) => {
        console.error(error);
        this.hideLoader();
        return throwError(error);
      })
    );
  }

в том же файле ts. У меня есть функции контроллера загрузки, подобные этой

 async presentLoading() {
    const loading = await this.loadingController.create({
      message: "Loading, Please Wait..."
      // duration: 5000
    });
    await loading.present();

    const { role, data } = await loading.onDidDismiss();

    console.log("Loading dismissed!");
  }

  hideLoader() {
    this.loadingController.dismiss();
  }

Однако, когда я делаю вызов API, я получаю событие event--->>> в консоли, но loadingController не отклоняется.

PS Если я добавляю duration к loadingController, иногда loadingController отклоняется несколько секунд, прежде чем API возвращает данные.

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