比较两个Observable的值并返回一个Observable的解决方法是使用combineLatest操作符。combineLatest操作符会在两个Observable中的任何一个发出新值时,将最新的值从每个输入Observable传递到结果Observable上。
下面是使用RxJava的代码示例:
Observable observable1 = Observable.just(1, 2, 3);
Observable observable2 = Observable.just(3, 4, 5);
Observable resultObservable = Observable.combineLatest(
observable1,
observable2,
(value1, value2) -> value1 > value2
);
resultObservable.subscribe(result -> System.out.println("Result: " + result));
上述代码中,我们有两个输入Observable observable1
和 observable2
,它们分别发出整数序列1、2、3和3、4、5。然后我们使用combineLatest
操作符将它们的值进行比较,比较的逻辑是判断observable1
的值是否大于observable2
的值。最后,我们订阅结果Observable resultObservable
,并打印出结果。
输出结果将是:
Result: false
Result: false
Result: false
Result: true
Result: true
Result: true
请注意,combineLatest
操作符的结果Observable将在两个输入Observable中的任何一个发出新值时发出新的结果。在上述示例中,当observable1
发出1时,和observable2
的值进行比较结果为false;当observable1
发出3时,和observable2
的值进行比较结果为true。