使用重试会导致奇怪的同步行为

时间:2019-01-02 19:25:12

标签: rxjs

Observable C()失败并触发并进入重试时,所有其他流似乎都被阻塞。

Observable.combineLatest(Auth(), B())
 .switchMap(([auth, b]) => C(auth.id, b.resp)())
 .retry(2)
 .subscribe({})

Auth函数返回一个结构为

的Observable
Stream.take(1)
  .map(s => s.userSession)
  .filter(s => s.type === 'AuthedUserSession')
  .map(assertAsAuthedSession)

Auth在其他一些地方与combineLatest连接符一起使用。 B()是可观察到的ajax。我尝试过在延迟时使用retryWhen,但似乎行为相同。我是否有可能通过将其与重试块一起使用来阻塞使用Auth()的任何地方?

1 个答案:

答案 0 :(得分:0)

尝试使用“ forkJoin”而不是“ combineLatest”,这种情况下看起来更方便。不确定是否可以解决问题,您可以为案件设置游乐场吗?