1,Concat与flatMap的异同
Concat与flatMap都能一次执行多个Observable
但使用Concat,各个Observable必须是针对同样的实体
而flatMap则能转换不同的实体
2,Observable与consumer的异同
Consumer 即消费者,用于接收单个值,BiConsumer用于接收两个值
而Observer则无限制
3,RxJava2.x的操作符包括:
Create操作符:用于生成一个发射器/被观察者
map 操作符:发射器发射事件后,把每个事件按特定的逻辑转换
zip 操作符:用于合并多个发射器,使得多个发射器的事件也可以合并成另一个事件,然后被发送到接收器
concat操作符:连接多个发神器,使得发射器可以依次执行,最终事件到接收器
flatMap操作符:把一个发射器转换为多个发神器,并把这多个发射器装到同一个发射器里,最终的效果是把一个发射器转换为另一个发射器。
concatMap操作符:concatMap与flatMap唯一的区别是concatMap保证了顺序,而flatMap是乱序的
distinct操作符: 发送事件时,去掉重复的事件
Filter操作符:过滤掉指定条件的事件
buffer操作符: 把事件按指定步长,指定长度转化为列表发到接收器,即凑够几个事件再以列表的形式发到接收器
timer 操作符:使得接收器在指定时间后接收到事件
interval操作符:使得接收器在循环接收到事件,可用于网络保持呼吸
doOnNext 操作符: 使得接收器在正式接收到数据前,能干点别的事情
skip 操作符:跳过指定数量事件
take 操作符:代表最大接受n个事件,超过n后,发射的事件将不被接收
just 操作符:建立简单发射器,依次发射其参数
debounce 操作符:去除发送频率太快的项,
defer 操作符:确保是在订阅时(而不是创建时)运行发射器的代码 每次订阅都会产生一个新的发射器
merge 操作符:类似于concat,它和 concat 的区别在于,不用等到 发射器 A 发送完所有的事件再进行发射器 B 的发送
last 操作符:只发送最后一个符合条件的事件(可以通过filter,skip等过滤),若没有符合条件的事件,发送默认值
reduce 操作符:每次用一个方法处理一个值,可以有一个 seed 作为初始值,最后生成一个事件发到接收器
scan 操作符:类似于reduce,区别在于reduce只发送最后的结果,scan会把每一步发送
window操作符:按照实际划分窗口,将数据发送给不同的 Observable
compose操作符:可以给发射器依次使用指定的多个操作
4,RxJava1.x是允许发射null的,而RxJava2.x不允许发射null,这意味着 Observable<Void> 不再发射任何值,而是正常结束或者抛出空指针。