如何从 2 个不同的 RxJava Observables 中获取 2 个值?
How to get 2 values from 2 differents RxJava Observables?
我有 2 个 Observable,它们 return 只有 1 个东西。我都需要
做其他事情的价值观。
如何订阅两个 Observables 并接收通知
仅当两个值都可用时?
我试过类似的方法:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
Observable.zip(
obs1,
obs2,
(a, b) -> {
System.out.println("Processing " + a + b);
return null;
}
);
但是除非我注册一个订阅者(这将是
没用)。
我使用的(丑陋的)解决方案是嵌入式订阅,例如:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
obs1.subscribe(
a -> {
obs2.subscribe(
b -> {
System.out.println("Processing " + a + b);
}
);
}
);
这么普通的事情,有什么办法?
Observables 是惰性的,所以你需要一个订阅者来完成这项工作。要组合来自两个可观察对象的项目,您需要使用 zip
运算符。只需对您的第一个解决方案进行一个小修改:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
Observable.zip(
obs1,
obs2,
(a, b) -> {
System.out.println("Processing " + a + b);
return null;
}
).subscribe();
我有 2 个 Observable,它们 return 只有 1 个东西。我都需要 做其他事情的价值观。
如何订阅两个 Observables 并接收通知 仅当两个值都可用时?
我试过类似的方法:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
Observable.zip(
obs1,
obs2,
(a, b) -> {
System.out.println("Processing " + a + b);
return null;
}
);
但是除非我注册一个订阅者(这将是 没用)。
我使用的(丑陋的)解决方案是嵌入式订阅,例如:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
obs1.subscribe(
a -> {
obs2.subscribe(
b -> {
System.out.println("Processing " + a + b);
}
);
}
);
这么普通的事情,有什么办法?
Observables 是惰性的,所以你需要一个订阅者来完成这项工作。要组合来自两个可观察对象的项目,您需要使用 zip
运算符。只需对您的第一个解决方案进行一个小修改:
final Observable<String> obs1 = Observable.just("A", "B");
final Observable<String> obs2 = Observable.just("A", "B");
Observable.zip(
obs1,
obs2,
(a, b) -> {
System.out.println("Processing " + a + b);
return null;
}
).subscribe();