Kotlin rxjava,如何检查单个
使用kotlin,有代码Kotlin rxjava,如何检查单个,kotlin,rx-java3,rx-java-completable,Kotlin,Rx Java3,Rx Java Completable,使用kotlin,有代码 fun fetchRemoteDataApi(): Single<RemoteDataResponse> = networkApi.getData() // it is just a retrofit @GET(".../api/getData") fun getData() : Single<RemoteDataResponse> fun mergeApiWithDb(): Completable
fun fetchRemoteDataApi(): Single<RemoteDataResponse> = networkApi.getData()
// it is just a retrofit
@GET(".../api/getData")
fun getData() : Single<RemoteDataResponse>
fun mergeApiWithDb(): Completable = fetchRemoteDataApi()
.zipWith(localDao.getAll())
.flatMapCompletable { (remoteData, localData) ->
doMerge(remoteData, localData) //<== return a Completable
}
问题是,如果要检查从fetchRemoteDataApi()
(即使用Log.i(…)打印RemoteDataResponse
的内容等)返回的Singles
,无论是在出现错误还是成功的情况下,如何执行
/// the functions
fun listAllTopics(): Flowable<List<String>> = localRepoDao.getAllTopics()
// which a DAO:
@Query("SELECT topic FROM RemoteDataTable WHERE read = 1")
fun getAllTopics(): Flowable<List<String>>
///
private val remoteTopicUsers: Single<List<User>>
get() {
return Single.create {
networkApi.getTopicUsers(object : ICallback.IGetTopicUsersCallback {
override fun onSuccess(result: List<User>) = it.onSuccess(result)
override fun onError(errorCode: Int, errorMsg: String?) = it.onError(Exception(errorCode, errorMsg))
})
}
}
///函数
有趣的listAllTopics():Flowable=localRepoDao.getAllTopics()
//哪一把刀:
@查询(“从RemoteDataTable中选择主题,其中read=1”)
趣味getAllTopics():可流动
///
专用val remoteTopicUsers:单个
得到(){
返回Single.create{
networkApi.getTopicUsers(对象:ICallback.IGetTopicUsersCallback{
override-fun-onSuccess(结果:List)=it.onSuccess(结果)
override-fun-onError(errorCode:Int,errorMsg:String?)=it.onError(Exception(errorCode,errorMsg))
})
}
}
您无法从完整表中提取有关元素的信息。尽管您可以在Completable
上使用doOnComplete()
,但它不会提供有关元素的任何信息
如果在单曲中调用doOnSuccess()
,则可以检查元素,因此您需要在代码的前面加入此调用。要检查错误,您可以在Completable
或Single
上使用doError()
val mergeApiDbCall = mergeApiWithDb().onErrorComplete().cache()
/// the functions
fun listAllTopics(): Flowable<List<String>> = localRepoDao.getAllTopics()
// which a DAO:
@Query("SELECT topic FROM RemoteDataTable WHERE read = 1")
fun getAllTopics(): Flowable<List<String>>
///
private val remoteTopicUsers: Single<List<User>>
get() {
return Single.create {
networkApi.getTopicUsers(object : ICallback.IGetTopicUsersCallback {
override fun onSuccess(result: List<User>) = it.onSuccess(result)
override fun onError(errorCode: Int, errorMsg: String?) = it.onError(Exception(errorCode, errorMsg))
})
}
}