RxJava - combineLatest操作符

combineLatest()作用于最近发射的数据项,在其中一个Observable发射数据项后,组合所有Observable所发射的最后一个数据项(前提是所有的Observable都至少发射过一个数据项),如下图所示;

其原理即:如果Observable1发射了1,接着Observable2发射了A,combineLatest()将会处理1和A,组合成1A;而Observable1发射了2,此时Observable2只发射了A,所以combineLatest()将处理2和A,组合成2A;待Observable2发射了B时,此时Observable1发射的最后一个数据是2,combineLatest()将处理2和B,组合成2B;以此类推组合成2C,2D,3D等等。

示例:

这个示例中,包含用户名、密码输入框,它们的内容要求分别为“01” 和 “0000",如果两者都正确,那么登录按钮的设置可点击,否则不能点击。

 Observable<CharSequence> observableName = RxTextView.textChanges(etName).skip(1);
 Observable<CharSequence> observablePsw = RxTextView.textChanges(etPassword).skip(1);
        
        Observable.combineLatest(observableName , observablePsw , new BiFunction<CharSequence, CharSequence, Boolean>() {
            @Override
            public Boolean apply(CharSequence userName, CharSequence userPsw) throws Exception {

                boolean name = userName.toString().equals("01");
                boolean psw = userPsw.toString().equals("0000");
                return name&&psw;
            }
        }).subscribe(new Consumer<Boolean>() {
            @Override
            public void accept(Boolean aBoolean) throws Exception {
                btn.setEnabled(aBoolean);
            }
        });
        

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chen_ShengJie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值