Issue
I’m using RxJs 5 lettable operators in Angular 5.
Based on this code sample, how will the retry work? will the error propagate to the first retry and then if it fails it will propagate to the second?
First observable:
first() {
return Observable.create(observer => {
observer.error('Something went wrong!')})
}).pipe(retry(3))
}
Second observable subscribe method call:
first().pipe(retry(1)).subscribe()
Thank you!
Solution
The resulting stream effectively looks like this:
Observable.create(...).pipe(retry(3), retry(1));
So the subscribe
will perform first subscription, then retry(3)
will perform 3 subscriptions to the source observable and after that will propagate the error to the next retry(1)
, which in turn will run the preceding sequence Observable.create(...).pipe(retry(3))
again so if you put console.log('subscribed')
into producer function you’ll have 8 log entries.
You can learn more about the retry
operator and its variations here.