我一直在寻找链接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
}