RxJava 操作符 repeat与repeatWhen

repeat操作符就是对某一个Observable重复产生多次结果,当repeat() 接收到onComplete()会触发重订阅,默认情况下运行在一个新的线程上

  Observable.range(1, 5).repeat(5).subscribe(new Action1<Integer>() {
            @Override
            public void call(Integer integer) {
                LogUtils.d("-------->" + integer);
            }
        });

这里重复执行了5次,打印结果:

02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5


repeatWhen 不是很好理解,就是可以让订阅者多次订阅,如:第一次订阅1-5 间隔6秒后又会重新订阅一次

  Observable.range(1, 5).repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
            @Override
            public Observable<?> call(Observable<? extends Void> observable) {
                return Observable.timer(6, TimeUnit.SECONDS);
            }
        }).subscribe(new Observer<Integer>() {
            @Override
            public void onCompleted() {
                LogUtils.d("------------->onCompleted");
            }

            @Override
            public void onError(Throwable e) {
                LogUtils.d("------------->onError:" + e);
            }

            @Override
            public void onNext(Integer integer) {
                LogUtils.d("------------->onNext:" + integer);
            }
        });

02-20 15:12:15.933 16996-16996/com.rxandroid.test1 D/----->: ------------->onNext:1
02-20 15:12:15.933 16996-16996/com.rxandroid.test1 D/----->: ------------->onNext:2
02-20 15:12:15.933 16996-16996/com.rxandroid.test1 D/----->: ------------->onNext:3
02-20 15:12:15.933 16996-16996/com.rxandroid.test1 D/----->: ------------->onNext:4
02-20 15:12:15.943 16996-16996/com.rxandroid.test1 D/----->: ------------->onNext:5
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onNext:1
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onNext:2
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onNext:3
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onNext:4
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onNext:5
02-20 15:12:21.943 16996-28194/com.rxandroid.test1 D/----->: ------------->onCompleted

你可能感兴趣的:(RxJava 操作符 repeat与repeatWhen)