retrywhen 后更新 Ajax url

Update Ajax url after retrywhen

在重试时,我能够 re-execute 失败时的 http 请求,就像 中的示例一样。一旦失败,我希望 ajax(..) 到 re-input 新选项。假设我想在第一次 http 请求失败后更改 header 或 url。有例子吗?

retryWhen 所做的就是重新订阅其源 Observable。这意味着什么取决于你。

例如,您可以在每次重新订阅时使用 Observable.defer() 到 return 不同的 Observable:

let retries = 0;

Observable.defer(() => {
    if (retries++ === 3) {
      return Observable.of('whatever');
    }
    return this.http.get(...);
  })
  .retryWhen((errors: Observable) => errors)
  .subscribe(...);

同样你可以使用 Observable.create().