RxJava转换操作符window

window操作符会在时间间隔内缓存结果,类似于buffer缓存一个list集合,区别在于window将这个结果集合封装成了observable


window(long timespan, TimeUnit unit)
第一个是缓存的间隔时间,第二个参数是时间单位


RxJava转换操作符window_第1张图片


Observable.interval(1,TimeUnit.SECONDS).take(10).window(3,TimeUnit.SECONDS).subscribe(new Observer>() {
            @Override
            public void onCompleted() {
                LogUtils.d("------>onCompleted()");
            }

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

            @Override
            public void onNext(Observable integerObservable) {
                LogUtils.d("------->onNext()");
                integerObservable.subscribe(new Action1() {
                    @Override
                    public void call(Long integer) {
                        LogUtils.d("------>call():" + integer);
                    }
                });
            }
        });


结果:

02-27 11:26:38.750 5279-5539/com.rxandroid.test1 D/----->: ------->onNext()
02-27 11:26:39.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():0
02-27 11:26:40.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():1
02-27 11:26:41.760 5279-5539/com.rxandroid.test1 D/----->: ------->onNext()
02-27 11:26:41.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():2
02-27 11:26:42.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():3
02-27 11:26:43.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():4
02-27 11:26:44.760 5279-5539/com.rxandroid.test1 D/----->: ------->onNext()
02-27 11:26:44.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():5
02-27 11:26:45.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():6
02-27 11:26:46.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():7
02-27 11:26:47.760 5279-5539/com.rxandroid.test1 D/----->: ------->onNext()
02-27 11:26:47.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():8
02-27 11:26:48.760 5279-5539/com.rxandroid.test1 D/----->: ------>call():9
02-27 11:26:48.760 5279-5539/com.rxandroid.test1 D/----->: ------>onCompleted()

你可能感兴趣的:(响应式编程)