RxJava - combineLatest操作符
程序员文章站
2024-02-28 12:19:04
...
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);
}
});
上一篇: js中的json
下一篇: Java使用代理进行网络连接方法示例