RxJava2 Flowable defaultIfEmpty(条件操作符)
defaultIfEmpty
目录
1 defaultIfEmpty接口
Flowable<T> |
defaultIfEmpty(T defaultItem)
Returns a Flowable that emits the items emitted by the source Publisher or a specified default item if the source Publisher is empty. 返回一个Flowable,它发出源Publisher发出的项或源Publisher为空时指定的默认项。 |
2 defaultIfEmpty图解说明
上面一条线代表源Publisher不发射数据,直接调用了完成接口,通过DefaultIfEmpty接口返回一个新的Flowable,它会发射一个默认的值
3 defaultIfEmpty测试用例
@Test
public void defaultIfEmpty() {
System.out.println("######defaultIfEmpty#####");
Flowable.just("李晓明", "张宝庆", "赵无极")
.defaultIfEmpty("请输入姓名")
.subscribe(new Consumer<String>() {
@Override
public void accept(String value) throws Exception {
System.out.println("value = " + value);
}
});
System.out.println("#如果Flowable为空时#");
Flowable.empty()
.defaultIfEmpty("请输入姓名")
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
System.out.println("o = " + o);
}
});
}
测试结果
######defaultIfEmpty#####
value = 李晓明
value = 张宝庆
value = 赵无极
#如果Flowable为空时#
o = 请输入姓名
上面的测试用例,当发出的值不为空的时候是看不出来有什么不同的,当Flowable为空的时候,发射了一个默认的值“请输入姓名”,这里就很有用了;
4 defaultIfEmpty实用场景
比如在长链接中,在没有数据的时候,定时发送心跳包给服务器,心跳包的数据是固定的默认数据。
其他操作符