RxJava操作符实践:7_条件和布尔操作之4_skipWhile

一、描述

丢弃Observable发射的数据,直到一个指定的条件不成立。

SkipWhile订阅原始的Observable,但是忽略它的发射物,直到你指定的某个条件变为false的那一刻,它开始发射原始Observable。

skipWhile默认不在任何特定的调度器上执行。

二、示意图

skipWhile

三、示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Observable.just(1, 2, 3, 4, 5)
.skipWhile(new Func1<Integer, Boolean>() {
@Override
public Boolean call(Integer integer) {
return integer != 3;
}
})
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
System.out.println("onCompleted.");
}

@Override
public void onError(Throwable e) {
System.out.println("onError: " + e.getMessage());
}

@Override
public void onNext(Integer integer) {
System.out.println("onNext: " + integer);
}
});

四、运行结果

1
2
3
4
onNext: 3
onNext: 4
onNext: 5
onCompleted.
  1. 发射前2个数据的时候,1和2都符合判断条件,即不等于3,skipWhile并不会将数据发射出去;
  2. 直到发射3的时候,判断条件不成立了,即3是等于3的;
  3. skipWhile才将后续的所有数据发射出来(3、4、5和完成事件)。

五、参考资料

ReactiveX官方文档

ReactiveX文档中文翻译

PS:欢迎关注 SherlockShi 个人博客

感谢你的支持,让我继续努力分享有用的技术和知识点!