如何在订阅者中使用多个 observable 的结果
How use multiple observable's results in subscriber
准确地说,这是一个简单的例子(在现实世界中,两个 observable 都是长 运行 任务):
Observable<String> city = Observable.just("Moscow");
//here i get hashcode based on result from city
Observable<Integer> hashCodeFromCity = city.flatMap(
new Func1<String, Observable<Integer>>() {
@Override
public Observable<Integer> call(String s) {
return Observable.just(s.hashCode());
}
});
hashCodeFromCity.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
//In subscriber I want to handle city and hashcode!
System.out.println("Hashcode from !Moscow!: " + integer);
}
});
如何正确地同时使用 city 和 hashcode?
不是构建 Observable<Integer>
,而是构建 Observable<MyPair>
。 MyPair
将是一个 class,它将保留哈希码和您的对象。
class MyPair<T> {
private final int hashCode;
private final T value;
}
Observable.just("Moscou").map(city -> new MyPair<String>(city, city.hashCode()).subscribe(pair -> /** **/);
准确地说,这是一个简单的例子(在现实世界中,两个 observable 都是长 运行 任务):
Observable<String> city = Observable.just("Moscow");
//here i get hashcode based on result from city
Observable<Integer> hashCodeFromCity = city.flatMap(
new Func1<String, Observable<Integer>>() {
@Override
public Observable<Integer> call(String s) {
return Observable.just(s.hashCode());
}
});
hashCodeFromCity.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
//In subscriber I want to handle city and hashcode!
System.out.println("Hashcode from !Moscow!: " + integer);
}
});
如何正确地同时使用 city 和 hashcode?
不是构建 Observable<Integer>
,而是构建 Observable<MyPair>
。 MyPair
将是一个 class,它将保留哈希码和您的对象。
class MyPair<T> {
private final int hashCode;
private final T value;
}
Observable.just("Moscou").map(city -> new MyPair<String>(city, city.hashCode()).subscribe(pair -> /** **/);