Observable.zip 使用 RxBinding 没有 return 结果
Observable.zip with RxBinding don't return result
我有两个 EditText,我用两个 observables 听它:
Observable<CharSequence> emailObservable = RxTextView.textChanges(emailNew);
Observable<CharSequence> passwordObservable = RxTextView.textChanges(passwordNew);
我想压缩此字段中的值以在两个值均有效时执行某些操作。
所以我写道:
Observable.zip(emailObservable, passwordObservable,
(charSequence, charSequence2) -> "test")
.subscribe(result -> Timber.e("Result:" + result));
但它 return 只有在第二个字段数据更改时才会产生结果。当我在第一个字段输入内容时,它不起作用。
同样的结果,如果我写:
emailObservable
.zipWith(passwordObservable, (email, password) -> email + " " + password)
.subscribe(result -> Timber.e(result);});
它 return 第一个字段的值是正确的,但是 return 如果我在上面输入什么都没有。
答案一定很轻松,但现在我不明白我做错了什么。
好的,我将 zip
替换为 combineLatest
,它以某种方式工作:
Observable.combineLatest(emailObservable, passwordObservable,
(charSequence, charSequence2) -> new String[]{charSequence.toString(), charSequence2.toString()})
.subscribe(result -> {
boolean isEmailValid = isValidEmail(result[0]);
boolean isPasswordValid = isValidPassword(result[1]);
});
我有两个 EditText,我用两个 observables 听它:
Observable<CharSequence> emailObservable = RxTextView.textChanges(emailNew);
Observable<CharSequence> passwordObservable = RxTextView.textChanges(passwordNew);
我想压缩此字段中的值以在两个值均有效时执行某些操作。
所以我写道:
Observable.zip(emailObservable, passwordObservable,
(charSequence, charSequence2) -> "test")
.subscribe(result -> Timber.e("Result:" + result));
但它 return 只有在第二个字段数据更改时才会产生结果。当我在第一个字段输入内容时,它不起作用。
同样的结果,如果我写:
emailObservable
.zipWith(passwordObservable, (email, password) -> email + " " + password)
.subscribe(result -> Timber.e(result);});
它 return 第一个字段的值是正确的,但是 return 如果我在上面输入什么都没有。
答案一定很轻松,但现在我不明白我做错了什么。
好的,我将 zip
替换为 combineLatest
,它以某种方式工作:
Observable.combineLatest(emailObservable, passwordObservable,
(charSequence, charSequence2) -> new String[]{charSequence.toString(), charSequence2.toString()})
.subscribe(result -> {
boolean isEmailValid = isValidEmail(result[0]);
boolean isPasswordValid = isValidPassword(result[1]);
});