如何结合flatmap和之前的Single

时间:2017-05-29 15:06:09

标签: rx-java kotlin reactive-programming

有下一个工作代码,它结合了.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的更优化解决方案?

1 个答案:

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