takeWhile() : 一直take ,直到某个条件进行skip
skipWhile() : 一直skip ,直到某个条件进行take
takeUtil() : 一直take ,直到第二个observable发射才开始skip
skipUtil() : 一直skip ,直到第二个observable发射才开始take
//skip : 忽略前n个item
@Test
public void skip() {
Disposable disposable = Observable.range(1, 5)
.skip(3)// 忽略前几个item
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println("integer=======" + integer);
}
});
}
//integer=======4
//integer=======5
//skipLast : 忽略后n个item
@Test
public void skipLast() {
Disposable disposable = Observable.just(1, 2, 3, 4, 5)
.skipLast(3)//忽略后3个item
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println("integer=======" + integer);
}
});
}
//integer=======1
//integer=======2
//丢弃原始Observable发射的数据,直到第二个Observable发射了一个数据,然后发射原始Observable的剩余数据
//skipUntil里面的Observable发射了之后,原始的Observable每隔一秒循环发射的数据才开始被接收到
public void skipUntil() {
Observable<Long> observable1 = Observable.interval(1, TimeUnit.SECONDS);
Observable<String> observable2 = Observable.just("1").delay(3, TimeUnit.SECONDS);
Disposable disposable = observable1
.skipUntil(observable2)
.subscribe(new Consumer<Long>() {
@Override
public void accept(@NonNull Long aLong) throws Exception {
System.out.println("aLong==============" + aLong);
}
});
}
//skip了0 、1 、2
//aLong==============3
//aLong==============4
//aLong==============5
//aLong==============6
//aLong==============7
//aLong==============8
//aLong==============9
//aLong==============10
//.........
//skipWhile : 满足继续忽略,不满足立即进行取值
@Test
public void skipWhile() {
Disposable disposable = Observable.just(1, 2, 3, 4, 5)
.skipWhile(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer <= 4;
}
})
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println("integer=======" + integer);
}
});
}
//integer=======5