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

时间:2018-08-17 10:30:02

标签: java android rx-java observable rx-android

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

SELECT u.* from users u
   INNER JOIN regulations r1 ON r1.user_id=u.id and r1.accepted=1 and r1.regulation=1
   INNER JOIN regulations r2 ON r2.user_id=u.id and r2.accepted=1 and r2.regulation=2
   INNER JOIN regulations r3 ON r3.user_id=u.id and r3.accepted=1 and r3.regulation=3
   INNER JOIN regulations r4 ON r4.user_id=u.id and r4.accepted=1 and r4.regulation=4

userLat和userLong在我的方法之外声明,并且在活动打开期间被更改,但是我的订阅仅考虑了它们的第一个值。我本来希望每次有新呼叫时,它们都会采用最新的值。

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

如果我了解到您正确地使用Observable.defer应该可以解决问题

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

答案 1 :(得分:0)

您的方法应类似于:

 Observable.combineLatest(userLatObservable, userLongObervable, yourmergerfunction).flatmap( lat, long –> firstApi.get(lat, long))... Etc..

我认为您的问题是,如何获取userLat和userLong的值...这些值应首先转换为Observables,以将它们加入链中。