如何在订阅者中使用多个 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 -> /** **/);