RxJava:合并 BehaviorSubjects
RxJava: merge BehaviorSubjects
如何合并两个 BehaviorSubject
,使它们表现得像一个 BehaviorSubject
?
我有这样的东西:
class Solution {
public static void main(String[] args) {
Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
Single<List<Integer>> merged = left.mergeWith(right).reduce(new ArrayList<Integer>(), (l, r) -> {
List<Integer> merged1 = new ArrayList<>(l.size() + r.size());
merged1.addAll(l);
merged1.addAll(r);
return merged1;
});
merged.subscribe(System.out::println);
}
}
我希望得到一些东西 [1, 2, 3, 4, 5, 6]
,但是 subscribe
没有打印任何东西。
这应该有效 ;)
Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
Observable<List<Integer>> merged = Observable.zip(left, right, (value1, value2) -> {
List<Integer> list = new ArrayList<>();
list.addAll(value1);
list.addAll(value2);
return list;
});
merged.subscribe(System.out::println);
如何合并两个 BehaviorSubject
,使它们表现得像一个 BehaviorSubject
?
我有这样的东西:
class Solution {
public static void main(String[] args) {
Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
Single<List<Integer>> merged = left.mergeWith(right).reduce(new ArrayList<Integer>(), (l, r) -> {
List<Integer> merged1 = new ArrayList<>(l.size() + r.size());
merged1.addAll(l);
merged1.addAll(r);
return merged1;
});
merged.subscribe(System.out::println);
}
}
我希望得到一些东西 [1, 2, 3, 4, 5, 6]
,但是 subscribe
没有打印任何东西。
这应该有效 ;)
Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
Observable<List<Integer>> merged = Observable.zip(left, right, (value1, value2) -> {
List<Integer> list = new ArrayList<>();
list.addAll(value1);
list.addAll(value2);
return list;
});
merged.subscribe(System.out::println);