retrofit - RxJava retry based on logic -


here case, have api call usign retrofit might fail due network error. if fails show error message retry button. when user presses retry button need retry latest observable again.

possible solutions:

  1. retry: retry should used before subscribing observable , resubscribe again if error happens , don't want, need resubscribe if user pressed retry button.

  2. retrywhen: keep trying emit items until emit observable error stop. same issue here, need not start retry process unless use decides to.

  3. resubscribe same observable: solution start emitting observable items, problem using cache operator, if 1 observable failed, got failed item cached , when subscribe again, got same error again.

is there other solutions go with?

you can go retrywhen, parameter - func1 - returns observable indicates when retry should happen. example :

publishsubject<object> retrybuttonclicked = publishsubject.create();  observable         .error(new runtimeexception())         .doonerror(throwable -> system.out.println("error"))         .retrywhen(observable -> observable.zipwith(retrybuttonclicked, (o, o2) -> o))         .subscribe();  retrybuttonclicked.onnext(new object()); 

every time retrybuttonclicked emmits event, observable retried

here's example - https://gist.github.com/benjchristensen/3363d420607f03307dd0


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -