java - 如何将可变参数传递给观察者?

标签 java android rx-java observable rx-android

我有两个与平面 map 合并的观察者。第一个观察者返回一个值,该值在调用第二个观察者时使用。

Observable<Integer> mergedObservers = firstAPI.getFirstInfo(userLat, userLong)
.flatMap(resultFirstObservable -> {
     try {
        return secondApi.getSecondInfo(resultFirstObservable.body().string(), "3") 
        .onErrorResumeNext(e -> {
            e.printStackTrace();
             return secondApi.getSecondInfo("defaultValue", "3");
          });
      } catch (IOException e) {
           e.printStackTrace();
           secondApi.getSecondInfo("defaultValue", "3") 
        .onErrorResumeNext(e -> {
            e.printStackTrace();
             return secondApi.getSecondInfo("defaultValue", "3");
          });
    });
}
}, (resultFirstObservable, resultSecondObservable) -> {
try {
    return transformToWhatINeed(resultSecondObservable.body().string());
} catch (IOException ex) {
    ex.printStackTrace();
    return transformToWhatINeed([]);
}
});

userLat 和 userLong 在我的方法之外声明,并在 Activity 打开期间更改,但我的订阅仅考虑这些的第一个值。我原以为每次有新的调用时,它们都会采用最新的值。

我做错了什么?

最佳答案

如果我正确理解你的问题,使用 Observable.defer 应该可以解决问题

Observable<Integer> mergedObservers = Observable.defer {
    firstAPI.getFirstInfo(userLat, userLong)
}.flatMap ...

关于java - 如何将可变参数传递给观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893435/

相关文章:

android - 如何仅在连接互联网时运行服务?

android - onNext 未调用 Retrofit 和 rxAndroid

android - 错误 : elements in annotation type declarations cannot declare formal parameters

android - 需要帮助将 AsyncTask 转换为 RxJava

java - 在此代码中没有得到所需的输出

java - 难以理解数字序列的按位与,提供的代码

java - 如果光标退出,如何在几秒钟后隐藏弹出窗口

java - ActionListener 未附加到 jbutton?

android - BitmapFactory 无法解码流。致命的空指针错误

java - 致命异常 : main java. lang.NullPointerException @ onPageSelected