call a function in case of httpClient timeout in Angular

若如初见. 提交于 2019-12-20 05:26:07

问题


I have a function sending a few requests on the server with a timeout each like:

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

In case of timeout (30s), everyone request gets canceled, which is understandable. My problem is, that in case of a timeout, the canceled request is not seen as an error, so it doesn't go to the error-part of the request. Are there any possibilities to call a function in this case?


回答1:


If you are using Angular 6, the way to go with the timeout handling is pipe/timeout, please look at this example:

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;
  })

This fragment is from this example I wrote to demonstrate HTTP Interceptors: https://stackblitz.com/edit/angular-my-http-interceptor?file=src%2Fapp%2Fapp.component.ts



来源:https://stackoverflow.com/questions/52187081/call-a-function-in-case-of-httpclient-timeout-in-angular

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!