我的http呼叫策略目前看起来像这样:
10秒后超时每个请求,并重试最大呼叫。 5次。
据我所知,我有点想到这一点,似乎有效:
{{1}}
现在我的问题是我需要在每次超时发生时做一些事情(例如只打印一个简短的信息文本'超时1','超时2'......)。
我该怎么做?
目前在Angular 4.2.4的rxjs 5.4.2(无论如何,我猜)。
答案 0 :(得分:3)
您可以做的是添加do operator
error.delay(500).do(() => {console.log('try')}).take(5);
答案 1 :(得分:2)
timeout
运算符会发出error
通知,因此如果您希望能够执行副作用,可以使用do
。
请注意do
分别针对next
,error
和complete
通知提出三个参数,因此正确使用它的方法如下:
this.httpClient.post(url, body)
.timeout(10000)
.do(null, error => console.log(error) /* ... or whatever */)
.retryWhen(error => {
return error.delay(500).take(5);
})
...