Handling error states in operator chains
If we go back to
Chapter 2
, Reactive Programming with RxPHP, and CURLObservable
, we know that it emits onError
when it wasn't able to download any data. The question is, what if we want to try downloading the URL again? And even more interestingly, repeat the failed attempt every few seconds.
Subscribing only to onError
signals is simple with the second parameter to the subscribeCallback()
method:
(new CURLObservable('https://example.com')) ->subscribeCallback(null, function($e) { ... });
It's obvious that nesting another CURLObservable
into onError
handler is probably not an option. This is exactly what the retry()
operator is designed for.
The retry() operator
When the retry()
operator receives an onError
signal, it captures it and tries to resubscribe to its source Observable. It takes as an argument the number of times it tries to resubscribe until it passes the error signal down the operator chain.
Let's rewrite the preceding...