欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RxJava - combineLatest操作符

程序员文章站 2024-02-28 12:19:04
...

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

RxJava - combineLatest操作符

其原理即:如果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);
            }
        });
        

 

相关标签: Rxjava