【发布时间】:2017-05-30 22:52:52
【问题描述】:
我的代码中有一个重试机制,我使用下面的行来执行我的重试逻辑。例如,我生成一个随机毫秒来延迟我的执行。当计时器滴答到 30 * 1000 毫秒时,我想取消此计时器。如何取消此计时器并立即执行我的逻辑。
//register retryWhen
Observable.retryWhen(new RetryWhenException());
//retry code.
public class RetryWhenException implements Function<Observable<? extends Throwable>, Observable<?>>{
public Observable<?> apply(final Observable<? extends Throwable> observable) throws Exception {
return observable.zipWith(Observable.range(1, count + 1), new BiFunction<Throwable, Integer, Wrapper>() {
@Override
public Wrapper apply(Throwable throwable, Integer integer) throws Exception {
return new Wrapper(throwable, integer);
}
}).flatMap(new Function<Wrapper, Observable<?>>() {
@Override
public Observable<?> apply(Wrapper wrapper) throws Exception {
long delay = 60 * 1000;
//How can I add some code here to cancel this time and execute this api call immediately if I receive a event like network gets back?
return Observable.timer(delay, TimeUnit.MILLISECONDS);
}
});
}
}
提前致谢。
【问题讨论】:
标签: android rx-java reactive-programming retrofit2 rx-java2