有关RXjava retryWhen

Observable.just(10000000).flatMap(new Func1<Integer, Observable<?>>() {
            @Override
            public Observable<?> call(Integer integer) {
                System.out.println("flatMap1 <<<<<<map integer = " + integer);
                Throwable error = new Throwable();
                return Observable.just(integer);
            }
        }).flatMap(new Func1<Object, Observable<?>>() {
            @Override
            public Observable<?> call(Object o) {
                System.out.println("flatMap2 <<<<<<map thread id = " + Thread.currentThread().getId());
                Throwable error = new Throwable();
                return Observable.error(error);
            }
        }).retryWhen(new Func1<Observable<? extends Throwable>, Observable<?>>() {
            @Override
            public Observable<?> call(Observable<? extends Throwable> errors) {

                return errors.flatMap(new Func1<Throwable, Observable<?>>() {
                    @Override
                    public Observable<?> call(Throwable error) {
                        System.out.println("retryWhen <<<<<<map thread id = " + Thread.currentThread().getId());
                        // For IOExceptions, we  retry
                        if (error instanceof IOException) {
                            return Observable.just(2);
                        }

                        // For anything else, don't retry
                        return Observable.just("dkfa;jdk;lsajfdks;");
                    }
                });
            }
        }).subscribe(new Subscriber<Object>() {

            @Override
            public void onCompleted() {
                System.out.println("onCompleted <<<<<<map thread id = " + Thread.currentThread().getId());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError  <<<<<<map thread id = " + Thread.currentThread().getId());
            }

            @Override
            public void onStart() {
                System.out.println("onStart  <<<<<<map thread id = " + Thread.currentThread().getId());
                super.onStart();
                // todo some common as show loadding  and check netWork is NetworkAvailable
                // if  NetworkAvailable no !   must to call onCompleted
            }

            @Override
            public void onNext(Object o) {
                System.out.println("onNext  <<<<<<map thread id = " + Thread.currentThread().getId());
            }
        });


输出:

onStart  <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1
retryWhen <<<<<<map thread id = 1
flatMap1 <<<<<<map integer = 10000000
flatMap2 <<<<<<map thread id = 1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值