【发布时间】:2018-05-14 18:34:14
【问题描述】:
我有一个非常简单的 http 调用发生。出现错误时,我希望请求重试 3 次,重试之间有 3 秒的延迟。我已经制定了一个接近的解决方案:
return this.http.put<string>(URL,
value).retryWhen(err => {
return err
.delay(3000)
.take(3)
.concat(Observable.throw("error occurred"));
})
.catch(err => this.handleHttpError(err)) ;
客户端像我预期的那样重试了 3 次。但是,我不知道如何以我的错误处理程序(通常需要 HttpResponse 参数)可以处理错误的方式抛出最终错误。
一旦我采取了(3),我怎样才能得到最终的错误,并将其转换为 HttpResponse 以发送给我的处理程序?还是我看错了?
归根结底,我需要知道伴随错误的 HttpResponse。当我在似乎无法完成的 concat 函数中从 retryWhen 抛出错误时。
我打赌这是一件很常见的事情,但是对于 Angular 5 的更新和反应,我想我只是错过了这条船。
【问题讨论】:
-
你不是已经用
.catch(err => this.handleHttpError(err))做这个了吗?或者这个方法返回什么? -
嗯。好松散。我发现了错误,但我不知道如何从提供给 retryWhen() 的 err Observable 中抛出 HttpResponse .. 我相信抛出的是 err 的 observable。
标签: error-handling rxjs httpclient angular5