Angular http.get()检测呼叫超时

时间:2019-04-14 19:40:09

标签: javascript angular typescript ionic-framework

我正在努力弄清楚如何使用Angular http和promises检测请求超时。我正在使用以下代码来格式化来自我的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 个答案:

答案 0 :(得分:1)

这是什么

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

并根据需要创建错误处理程序。其余的将保持不变。