如何处理多单?
How to handle a multiple singles?
我正在用 rxjava2 存根在 grpc 上编写 Messenger 服务器,我坚持结合我的单曲。
我已经尝试过一些
val user:Single<User> = getUser()
val conversation:Single<Conversation> = getConversation(user.blockingGet())
return conversation.map{
someMethod(user.blockingGet(), conversation.it())
it
}
比起所有的样例都显得不美观,请问有没有什么办法可以把这些单曲合为一条线呢?
先提个小意见,通常你不想用blockingGet
。相反,您使用其他组合器来组合您的解决方案,最后您使用订阅来评估它。
我假设您想合并 return 和 Single
的多个调用,其中下一个调用的结果取决于前一个。
您要查找的组合子是flatMap
。
val user: Single<User> = getUser()
val singleOfSomething: Single<Conversation> = user.flatMap { user->
getConversation(user).flatMap {conversation ->
someMethod(user, conversation)
}
}
这里的 return 类型将是 Single
任何 someMethod
returns.
您可以在需要时使用 subscribe
获取该值。
我正在用 rxjava2 存根在 grpc 上编写 Messenger 服务器,我坚持结合我的单曲。
我已经尝试过一些
val user:Single<User> = getUser()
val conversation:Single<Conversation> = getConversation(user.blockingGet())
return conversation.map{
someMethod(user.blockingGet(), conversation.it())
it
}
比起所有的样例都显得不美观,请问有没有什么办法可以把这些单曲合为一条线呢?
先提个小意见,通常你不想用blockingGet
。相反,您使用其他组合器来组合您的解决方案,最后您使用订阅来评估它。
我假设您想合并 return 和 Single
的多个调用,其中下一个调用的结果取决于前一个。
您要查找的组合子是flatMap
。
val user: Single<User> = getUser()
val singleOfSomething: Single<Conversation> = user.flatMap { user->
getConversation(user).flatMap {conversation ->
someMethod(user, conversation)
}
}
这里的 return 类型将是 Single
任何 someMethod
returns.
您可以在需要时使用 subscribe
获取该值。