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

时间:2017-12-29 19:00:34

标签: angular rxjs rxjs5

我在Angular 5中使用RxJs 5 lettable运算符。 基于此代码示例,重试将如何工作?将错误传播到第一次重试,如果失败,它将传播到第二次?

首先观察到:

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

生成的流有效地看起来像这样:

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

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