重试后更新Ajax网址

时间:2017-06-13 14:33:42

标签: rxjs rxjs5

在重试时,我能够在失败时重新执行http请求,就像RxJs Observables: run retryWhen after some more async requests处的示例一样。我希望ajax(..)在失败后重新输入新选项。假设我想在第一次http请求失败后更改标题或URL。任何一个例子?

1 个答案:

答案 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()