嵌套的 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。
我在 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。