RxJava结合操作符笔记

本文详细介绍了RxJava中几种常用的操作符,包括startWith用于在序列开始处插入元素,merge用于合并多个Observable的发射项,Concat确保按顺序发射,zip通过函数组合多个Observable的数据,以及combineLatest基于最新数据项进行组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结合操作符

截图来自于https://mcxiaoke.gitbooks.io/...
图片描述

startWith

startWith在数据序列的开头插入一条指定的项
startWith

Observable.just(1,2,3,4)
                .startWith(0,0,0,0)
                .subscribe(new Action1<Integer>() {
                    @Override
                    public void call(Integer integer) {
                        Log.i(TAG, "call: "+integer);
                    }
                });

merge

merge合并多个Observables的发射物
merge
使用Merge操作符你可以将多个Observables的输出合并,就好像它们是一个单个的Observable一样。
Merge可能会让合并的Observables发射的数据交错(有一个类似的操作符Concat不会让数据交错,它会按顺序一个接着一个发射多个Observables的发射物)。

Observable<Integer> observable = Observable.just(1, 1, 1);
        Observable<Integer> observable1 = Observable.just(2, 2, 2);
        Observable.merge(observable1,observable)
                .subscribe(new Action1<Integer>() {
                    @Override
                    public void call(Integer integer) {
                        Log.i(TAG, "call: "+integer);
                    }
                });

Concat

Concat不会让数据交错,它会按顺序一个接着一个发射多个Observables的发射物。

zip

[zip]()通过一个函数将多个Observables的发射物结合到一起,基于这个函数的结果为每个结合体发射单个数据项
zip

 Observable<Integer> observable1 = Observable.just(1, 2, 3, 4, 5);
        Observable<Integer> observable2 = Observable.just(1, 1, 1, 1, 1, 1);
        Observable.zip(observable1, observable2, new Func2<Integer, Integer, String>() {
            @Override
            public String call(Integer integer, Integer integer2) {
                return integer+integer2+" hello zip";
            }
        }).subscribe(new Action1<String>() {
            @Override
            public void call(String s) {
                Log.i(TAG, "call: "+s);
            }
        });

在这里Func2的作用相当于为zip操作符提供提供算法,也就是你需要让zip怎么加工数据。

combineLatest

combineLatest当两个Observables中的任何一个发射了数据时,使用一个函数结合每个Observable发射的最近数据项,
并且基于这个函数的结果发射数据。

combineLatest

join

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值