在 Angular 中的 httpClient 超时的情况下调用函数

Pan*_*oon 2 timeout httpclient angular

我有一个函数在服务器上发送一些请求,每个请求都有超时:

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

如果超时(30 秒),每个人的请求都会被取消,这是可以理解的。我的问题是,在超时的情况下,取消的请求不会被视为错误,因此它不会转到请求的错误部分。在这种情况下是否有可能调用函数?

ham*_*ima 7

如果您使用的是 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;
  })
Run Code Online (Sandbox Code Playgroud)

此片段来自我编写的用于演示 HTTP 拦截器的示例:https : //stackblitz.com/edit/angular-my-http-interceptor? file = src%2Fapp% 2Fapp.component.ts