RxJavaCallAdapterFactory.java 文件源码

java
阅读 25 收藏 0 点赞 0 评论 0

项目:HttpService 作者:
@Override public Observable<Long> call(Observable<? extends Throwable> errorObservable) {
  return errorObservable.zipWith(Observable.range(INITIAL, maxConnectCount),
      new Func2<Throwable, Integer, InnerThrowable>() {

        @Override public InnerThrowable call(Throwable throwable, Integer i) {
          if (throwable instanceof IOException) return new InnerThrowable(throwable, i);
          return new InnerThrowable(throwable, i);
        }
      }).concatMap(new Func1<InnerThrowable, Observable<Long>>() {
    @Override public Observable<Long> call(InnerThrowable innerThrowable) {

      Integer currentCount = innerThrowable.getCurrentRetryCount();
      if (RetryWhenFunc.this.maxConnectCount.equals(currentCount)) {
        return Observable.error(innerThrowable.getThrowable());
      }

      /*use Schedulers#immediate() to keep on same thread */
      return Observable.timer((long) Math.pow(2, currentCount), TimeUnit.SECONDS,
          Schedulers.immediate());
    }
  });
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号