Может ли оператор тайм-аута rxjs вызвать функцию вместо возврата ошибки и отмены вызова http - PullRequest
0 голосов
/ 10 июля 2019

Я внедряю службу углового перехвата, которая ищет ошибки и показывает «снэк-бар», теперь я пытаюсь добавить функциональность для обработки «Нет интернета» или «Медленный интернет».Я пытался с оператором тайм-аута, но после тайм-аута, HTTP-вызов отменяется, но мое требование состоит в том, чтобы уведомить пользователя о том, что его интернет работает медленно, а затем, возможно, через некоторое время отменить, поэтому мне нужен оператор тайм-аута для запуска функции, а не для запускаошибка

Это мой код


  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    request = request.clone({

      setHeaders: {
        Authorization: `Bearer ${this.user.getToken()}`
      }
    });

    return next.handle(request).timeout(8000)
      catchError((error) => {
        console.log(error)
        console.log(error.name)
        if(error.name == 'TimeoutError'){
          this.alert.snack('Your Internet seems to be very slow','OK',4000)
          this.alert.showSlowInternet()

        }
        else if(error.error.detail === "Given token not valid for any token type"){
          this.global.refresh(this.router.url)
        }
        else if(error.error.detail === "No Connectivity"){
          this.alert.dismissableSnack('No Connectivity detected','DISMISS',)
        }
        else if(error.error.detail){
        this.alert.snack(error.error.detail,'OK')
        }

        else{
            this.alert.snack('Server not responding','OK')
        }
          return throwError(error);
      })
  }
...