嵌套的 RxJs 重试运算符如何工作?

How does nested RxJs retry operators work?

我在 Angular 5 中使用 RxJs 5 可出租运算符。 根据此代码示例,重试将如何进行?错误会传播到第一次重试,如果失败,它会传播到第二次吗?

第一个可观察到的:

first() {
  return Observable.create(observer => {
     observer.error('Something went wrong!')})
  }).pipe(retry(3))
}

第二次可观察订阅方法调用:

first().pipe(retry(1)).subscribe()

谢谢!

结果流看起来像这样:

Observable.create(...).pipe(retry(3), retry(1));

因此 subscribe 将执行第一次订阅,然后 retry(3) 将对源可观察对象执行 3 次订阅,然后将错误传播到下一个 retry(1),这又是将 运行 前面的序列再次 Observable.create(...).pipe(retry(3)) 所以如果你将 console.log('subscribed') 放入生产者函数中你将有 8 个日志条目。

您可以了解有关 retry 运算符及其变体的更多信息 here