Rxjs 如何仅在内部可观察到错误时重试?

Rxjs 如何仅在内部可观察到错误时重试?,rxjs,reactive,Rxjs,Reactive,我有以下样本: const result = http.get('http://google.com') .switchMap(() => 'http://example.com') // This retry should retry only example.com .retryWhen(error => (error instanceof Re

我有以下样本:

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))
我想要一个retryWhen,它将只重试他的直系父母。如果出现全局错误,我将重试整个序列。RxJS 5有没有简单的方法

UPD:这些只是例子。实际上情况更复杂,我只需要一个想法。

你只需要把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))