在重试时,我能够在失败时重新执行http请求,就像RxJs Observables: run retryWhen after some more async requests处的示例一样。我希望ajax(..)在失败后重新输入新选项。假设我想在第一次http请求失败后更改标题或URL。任何一个例子?
答案 0 :(得分:2)
retryWhen
所做的就是它重新订阅了它的源Observable。这意味着什么取决于你。
例如,您可以使用Observable.defer()
在每次重新订阅时返回不同的Observable:
let retries = 0;
Observable.defer(() => {
if (retries++ === 3) {
return Observable.of('whatever');
}
return this.http.get(...);
})
.retryWhen((errors: Observable) => errors)
.subscribe(...);
同样,您可以使用例如Observable.create()
。