如何捕获超时请求

How can I catch a timeout request

这是我的代码:

properties.service.ts

get(stringParams) {
    let headers = new Headers({
      "X-AUTH-APIKEY":  API_KEY
    });

    this.options = new RequestOptions({
      headers: headers
    });
    return this.http
      .get(`${API_URL}/properties/?${stringParams}`, this.options)
      .timeout(50)
      .map((response: Response) => response.json())
  }



posts.ts

    this.propertiesService.get(arrayParams).subscribe((data: any) => {

    }), (err) => { console.log("timeoout")};

我在超时中设置了 50,所以被解雇了,但我无法以这种方式捕获错误

}), (err) => { console.log("timeoout")};

我收到这个错误:

TimeoutError {name: "TimeoutError", stack: "TimeoutError: Timeout has occurred↵    at new Time…http://localhost:8100/build/polyfills.js:3:10143)", message: "Timeout has occurred"

编辑:

this.propertiesService.get(arrayParams).subscribe((data: any) => {

        }), (err) => { console.log("timeoout")};

get(stringParams) {

    return this.http
      .get(`${API_URL}/properties/?${stringParams}`, this.options)
      .timeout(50)
      .map((response: Response) => response.json())
      .catch(this.handleError);
}

private handleError(error: any) { 
  return Observable.throw(error);
}

我试过这个解决方案,但我仍然遇到这个错误

解决方案:

代码应该是这样的(subscribe里面的err):

}, (err) => { console.log("timeoout")});

err 应该在 subscribe

里面
this.propertiesService.get(arrayParams).subscribe((data: any) => {

    }, (err) => { console.log("timeoout")});

你应该catch例外:

get(stringParams) {

    return this.http
      .get(`${API_URL}/properties/?${stringParams}`, this.options)
      .timeout(50)
      .map((response: Response) => response.json())
      .catch(this.handleError);
}

private handleError(error: any) { 
  return Observable.throw(error);
}