有下一个工作代码,它结合了.connect()
和.auth()
的结果。
auth()
取决于connect()
的结果。总的来说,有必要将api和auth结果合并到Connection
对象中。
fun getConnection(token: String): Single<Connection> {
return connect()
.map { Api(it) }
.flatMap { api -> api.auth(token)
.map { Connection(api, it) }
}
}
恕我直言这段代码闻起来很香。可能是在没有rxjava2内部映射的情况下获得Connection
的更优化解决方案?
答案 0 :(得分:2)
在您的情况下,您实际上根本不需要使用map()
。只需在Api
内创建flatmap()
对象。
fun getConnection(token: String): Single<Connection> {
return connect().flatMap { conn ->
val api = Api(conn)
api.auth(token).map { Connection(api, it) }
}
}