我有以下样本:
const result = http.get('http://google.com')
.switchMap(() => 'http://example.com')
// This retry should retry only example.com
.retryWhen(error =>
(error instanceof Response && error.status == 429) ?
Observable.timeout(5000) : Observable.throw(error))
// This retry should retry google.com
.retryWhen(error => Observable.timeout(5000))
我想重试一次,只会重试他的直接父母。然后在出现全局错误的情况下,我将重试整个序列。 RxJS 5有一个简单的方法吗?
UPD:这些只是一些例子。实际情况更复杂我只需要一个想法。
答案 0 :(得分:1)
您只需将retryWhen
放在switchMap
:
const inner = http.get('http://example.com')
// This retry should retry only example.com
.retryWhen(error =>
(error instanceof Response && error.status == 429) ?
Observable.timer(5000) : Observable.throw(error))
const outer = http.get('http://google.com')
.switchMap(() => inner)
// This retry should retry google.com
.retryWhen(error => Observable.timeout(5000))