Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static <T, R> Observable.Transformer<T, R> switchMapSwallowError(Func1<T, Observable<R>> onwardCall) {
- return new Observable.Transformer<T, R>() {
- private R previousValue = null;
- @Override
- public Observable<R> call(Observable<T> observable) {
- return observable.switchMap(
- a -> onwardCall.call(a)
- .doOnNext(value -> previousValue = value)
- .onErrorReturn(e -> previousValue)
- );
- }
- };
- }
- BehaviorSubject<Void> tigger = BehaviorSubject.create();
- trigger.compose(switchMapSwallowError(aVoid->makeNetworkCall())).subscribe(next->{
- },e->{})
- tigger.onNext(null)//causes call to makeNetworkCall
- tigger.onNext(null)//causes call to makeNetworkCall which if it throws an error will return previous value
- tigger.onNext(null)//causes call to makeNetworkCall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement