RxJava主题:听取它发出的那个

时间:2017-12-09 13:21:33

标签: android kotlin rx-java rx-java2

我一直在寻找链接Rx事件,并且在获得我想要的工作方面遇到了一些麻烦。

我基本上是在请求用户权限,请求用户的位置(如果已被授予),然后从API请求数据。以下代码来自ViewModel,我希望我的View(技术上是Fragment)能够倾听。我对下面代码的问题是(显然),我的第一个flatmap没有被调用,因为没有初始事件触发我的Subject。我一直在尝试这些代码的一些变体,但找不到我想要实现的正确语法。

非常感谢任何帮助。

var dataSubject = PublishSubject.create<Array<Data>>()

fun getData() : Observable<Array<Data>> {

    dataSubject
            .flatMap { permissions.request(Manifest.permission.ACCESS_COARSE_LOCATION) }
            .flatMap { granted: Boolean ->
                if (granted) {
                    locationProvider.lastKnownLocation
                } else {
                    throw Error()
                }
            }
            .flatMap { location: Location ->
                dataRepository.getData(location.latitude, location.longitude)
            }

    return dataSubject

}

0 个答案:

没有答案