Kotlin rxjava,如何检查单个

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

使用kotlin,有代码

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))
                })
            }
        }