Angular http.get () обнаруживает тайм-аут вызова - PullRequest
1 голос
/ 14 апреля 2019

Я изо всех сил пытаюсь выяснить, как определить время ожидания запроса с помощью Angular http и обещаний. Я использую следующий код для форматирования ответа от моего API, и в настоящее время истекает время ожидания, которое я хочу обработать с сообщением об ошибке, код здесь работает, когда мой API возвращает фактическое сообщение об ошибке, просто оно даже не получает удар когда тайм-аут API.

Я не смог найти документацию по Angular http, в которой есть способ справиться с таймаутами, так что все будет полезно, спасибо!

Код:

/**
  * GET from the API
  * @param params  What to send
  * @param path    Where to go
  */
public get(path, params): Promise<any> {
  return this.formatResponse(
    this.http.get(this.apiUrl + path, params)
  );
}

/**
  * Takes the API response and converts it to something usable
  * @param response Promise of formatted data
  */
public formatResponse(response): Promise<any> {
  return response
    .toPromise()
    .then(r => r.json().data)
    .catch(e => {
      console.log('hitting error');
      const errors = e.json().errors;
      let error = 'Something went wrong, please try again in a few minutes.';

      if (errors && errors.length > 0) {
        error = errors[0].message;
      }

      // Create alert
      this.utilities.createAlert(
        'Whoops!',
        error
      );

      // Throw the error
      throw new Error(error);
    });
}

При мониторинге во вкладке сети вижу:

Не удалось загрузить ресурс: истекло время ожидания запроса.

1 Ответ

1 голос
/ 14 апреля 2019

что по этому поводу

public get(path, params): Promise<any> {
  return this.formatResponse(
    this.http.get(this.apiUrl + path, params).pipe(timeout(10000), catchError(this.handleError)
  );
}

и создайте обработчик ошибок, как вам нравится. остальное останется прежним.

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