我正在使用rxjava2存根在grpc上编写Messenger服务器,并且坚持合并单打。
我已经尝试过某种
val user:Single<User> = getUser()
val conversation:Single<Conversation> = getConversation(user.blockingGet())
return conversation.map{
someMethod(user.blockingGet(), conversation.it())
it
}
那么看起来所有示例都不美观,那么有没有办法将所有这些单曲组合成一行?
答案 0 :(得分:0)
首先要发表一点评论,通常您不想使用blockingGet
。取而代之的是,您使用其他组合器来组合您的解决方案,最后使用订阅对其进行评估。
我假设您要合并多个返回Single
的调用,而下一个调用的结果取决于上一个。
您要寻找的组合器是flatMap
。
val user: Single<User> = getUser()
val singleOfSomething: Single<Conversation> = user.flatMap { user->
getConversation(user).flatMap {conversation ->
someMethod(user, conversation)
}
}
在这里,返回类型将是Single
返回值的someMethod
。
您将在需要时使用subscribe
来获得该价值。