对于每次超时都有特定操作的http调用可观察

时间:2017-09-19 07:35:48

标签: angular rxjs observable

我的http呼叫策略目前看起来像这样:
10秒后超时每个请求,并重试最大呼叫。 5次。
据我所知,我有点想到这一点,似乎有效:

{{1}}

现在我的问题是我需要在每次超时发生时做一些事情(例如只打印一个简短的信息文本'超时1','超时2'......)。

我该怎么做?

目前在Angular 4.2.4的rxjs 5.4.2(无论如何,我猜)。

2 个答案:

答案 0 :(得分:3)

您可以做的是添加do operator

error.delay(500).do(() => {console.log('try')}).take(5);

答案 1 :(得分:2)

timeout运算符会发出error通知,因此如果您希望能够执行副作用,可以使用do

请注意do分别针对nexterrorcomplete通知提出三个参数,因此正确使用它的方法如下:

this.httpClient.post(url, body)
  .timeout(10000)
  .do(null, error => console.log(error) /* ... or whatever */)
  .retryWhen(error => {
    return error.delay(500).take(5);
  })
  ...