RxJava2如何将Single链接到Completable,以便在Completable完成时订阅它

Mic*_*ovo 3 android rx-java2

如何将Single链接到Completable,以便在Completable完成时获得订阅?

repository.downloadUser() 是单身.

基于调试,似乎此方法中的Single被调用但从未订阅(即该downloadUser()方法被调用但是它创建的Single内部没有代码被调用).

问题是,如何repository.downloadUser()使用原始订阅者在链中订阅Single?我错过了什么或做错了什么?或者这不可能吗?

fun login(username: String, password: String): Completable {    
    return repository.login(username, password)
        .andThen {
            repository.downloadUser() // This is a Single
                .flatMap { downloadedUser ->
                    user = downloadedUser
                    it.toSingle()
                }
                // When I get this part working there are other things I want to 
                // chain as well.
}
Run Code Online (Sandbox Code Playgroud)

编辑:我可能只是把它分成两个调用,一个用于Completable,然后另一个用于其余的调用.然而,如果有人知道这是否可能仍然是好的...

Chr*_*ner 5

很确定这是你使用花括号.Kotlin认为你正在调用RxJava方法

public final Completable andThen(CompletableSource next) {
   return concatWith(next);
}
Run Code Online (Sandbox Code Playgroud)

意思是返回类型Completable,但你想要它作为一个Single.你需要的是什么

repository.login(username, password)
    .andThen(repository.downloadUser())
    .flatmap { ... }
Run Code Online (Sandbox Code Playgroud)