我有一个函数可以在服务器上发送一些超时请求,每个请求都像这样:
this.httpClient.get(url, { headers: headers })
.timeout(30000)
.subscribe(
(response) => {
...
},
error => {
...
}
...
);
在超时(30秒)的情况下,每个请求都被取消,这是可以理解的。 我的问题是,在超时的情况下,已取消的请求不会被视为错误,因此不会转到请求的错误部分。 在这种情况下可以调用函数吗?
答案 0 :(得分:1)
如果您使用的是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;
})
此片段来自我编写的用于演示HTTP拦截器的示例:https://stackblitz.com/edit/angular-my-http-interceptor?file=src%2Fapp%2Fapp.component.ts