вызвать функцию в случае тайм-аута httpClient в Angular - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть функция, отправляющая на сервер несколько запросов с таймаутом, например:

this.httpClient.get(url, { headers: headers })
        .timeout(30000)
        .subscribe(
            (response) => {
                ...
            },
            error => {
                ...
            }
                ...
            );

В случае тайм-аута (30 с) каждый запрос отменяется, что понятно. Моя проблема в том, что в случае тайм-аута отмененный запрос не рассматривается как ошибка, поэтому он не переходит к ошибочной части запроса. Есть ли возможность вызвать функцию в этом случае?

1 Ответ

0 голосов
/ 05 сентября 2018

Если вы используете Angular 6, способ обработки тайм-аута - pipe/timeout, пожалуйста, посмотрите на этот пример:

this.http.get('https://httpstat.us/200?sleep=5000')
  .pipe(timeout(1000))
  .subscribe(response => {
    console.log('forceTimeout', response);
  }, (error) => {
    console.log('Error', error);
    this.error = error.constructor.name;
  })

Этот фрагмент взят из этого примера, который я написал для демонстрации перехватчиков HTTP: https://stackblitz.com/edit/angular-my-http-interceptor?file=src%2Fapp%2Fapp.component.ts

...