如何将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.
}
编辑:我可能会将其分为两个调用,一个用于Completable,另一个用于其余调用。但是,如果有人知道,那么知道这是否可能仍然是好的...
答案 0 :(得分:5)
很确定这是你使用花括号。 Kotlin认为你正在调用RxJava方法
public final Completable andThen(CompletableSource next) {
return concatWith(next);
}
表示返回类型为Completable
,但您希望它为Single
。你需要的是
repository.login(username, password)
.andThen(repository.downloadUser())
.flatmap { ... }