Android框架源码分析——RxJava组合操作符

本文深入探讨了RxJava中的组合操作符,包括concat()、merge()、concatDelayError()、mergeDelayError()、zip()、combineLatest()、reduce()、collect()、startWith()和count()等,详细解释了它们的功能、应用场景和使用示例,帮助开发者理解如何利用这些操作符处理多个被观察者对象的事件合并和处理。
摘要由CSDN通过智能技术生成

 1、简介:

 之前几篇讲解的操作符多是单个被观察者对象发送事件,本篇来介绍下组合操作符的使用,组合操作符的作用:

组合 多个被观察者(Observable) & 合并需要发送的事件

 

 2、类型:

 

3、操作符介绍

 

  • concat() / concatArray()
  1. 作用:合并多个被观察者 ,发送的顺序与产生的顺序相同(串行发送)
  2. 二者联系:concat 使用时最多只能发送4个被观察者对象,concatArray可发送大于4个
  3. 使用场景:多个被观察者发送事件
  4. 使用实例:
Observable.concatArray(
                Observable.just("1"),
                Observable.just("2", "3"),
                Observable.just("4", "5", "6"),
                Observable.just("7", "8", "9","10"),
                Observable.just("A", "B", "C")

        ).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("concat=====", s);
            }
        });

输出的结果

05-03 20:04:52.379 6302-6302/? E/concat=====: 1
05-03 20:04:52.379 6302-6302/? E/concat=====: 2
05-03 20:04:52.379 6302-6302/? E/concat=====: 3
05-03 20:04:52.379 6302-6302/? E/concat=====: 4
05-03 20:04:52.379 6302-6302/? E/concat=====: 5
05-03 20:04:52.379 6302-6302/? E/concat=====: 6
05-03 20:04:52.379 6302-6302/? E/concat=====: 7
05-03 20:04:52.379 6302-6302/? E/concat=====: 8
05-03 20:04:52.379 6302-6302/? E/concat=====: 9
05-03 20:04:52.379 6302-6302/? E/concat=====: 10
05-03 20:04:52.379 6302-6302/? E/concat=====: A
05-03 20:04:52.379 6302-6302/? E/concat=====: B
05-03 20:04:52.379 6302-6302/? E/concat=====: C
  • merge() / mergeArray()
  1. 作用:合并多个被观察者(并行发送)
  2. 二者联系:merge使用时最多只能发送4个被观察者对象,mergeArray可发送大于4个
  3. 使用场景:并行发送多个被观察者发送事件
  4. 使用实例:
Observable.mergeArray(
                Observable.intervalRange(2,3,1000,1000, TimeUnit.MILLISECONDS),
                Observable.intervalRange(5,3,1000,1000, TimeUnit.MILLISECONDS),
                Observable.intervalRange(8,3,1000,1000, TimeUnit.MILLISECONDS)
        ).subscribe(new Consumer<Long>() {
            @Override
            public void accept(Long s) throws Exception {
                Log.e("concat=====", s+"");
            }
        });

输出结果:

05-03 20:14:55.558 6948-6974/? E/concat=====: 2
05-03 20:14:55.560 6948-6976/? E/concat=====: 8
05-03 20:14:55.562 6948-6975/? E/concat=====: 5
05-03 20:14:56.558 6948-6974/? E/concat=====: 3
05-03 20:14:56.559 6948-6975/? E/concat=====: 6
05-03 20:14:56.560 6948-6976/? E/concat=====: 9
05-03 20:14:57.558 6948-6974/? E/concat=====: 4
05-03 20:14:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值