Skip to content

Instantly share code, notes, and snippets.

@jdamcd
Last active September 20, 2015 10:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdamcd/ca2962745e1819f17026 to your computer and use it in GitHub Desktop.
Save jdamcd/ca2962745e1819f17026 to your computer and use it in GitHub Desktop.
Observable<ServiceResult> pollService() {
final PollingState state = new PollingState();
return Statement.doWhile(delayFetch(), state.shouldContinue())
.doOnNext(serverResult -> serverResult.isProcessing()
? pollingState.increment()
: pollingState.resultObtained())
.filter(result -> !result.isProcessing());
}
private Observable<ServiceResult> delayFetch() {
return Observable.timer(2, TimeUnit.SECONDS)
.flatMap(tick -> fetchResult());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment