Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. public static <T, R> Observable.Transformer<T, R> switchMapSwallowError(Func1<T, Observable<R>> onwardCall) {
  2. return new Observable.Transformer<T, R>() {
  3.  
  4. private R previousValue = null;
  5.  
  6. @Override
  7. public Observable<R> call(Observable<T> observable) {
  8. return observable.switchMap(
  9. a -> onwardCall.call(a)
  10. .doOnNext(value -> previousValue = value)
  11. .onErrorReturn(e -> previousValue)
  12. );
  13. }
  14. };
  15. }
  16. BehaviorSubject<Void> tigger = BehaviorSubject.create();
  17. trigger.compose(switchMapSwallowError(aVoid->makeNetworkCall())).subscribe(next->{
  18. },e->{})
  19. tigger.onNext(null)//causes call to makeNetworkCall
  20. tigger.onNext(null)//causes call to makeNetworkCall which if it throws an error will return previous value
  21. tigger.onNext(null)//causes call to makeNetworkCall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement