集合中每个项的java异步调用
我有一个问题到目前为止还没有解决 我是RxKotlin的新手,所以这可能很简单。请看一下代码:
override fun infos(): Stream<Info> =
client.infoAboutItem(identifier)
.map {
val itemId = it.itemId ?: ""
val item = client.itemForId(itemId)
ClientInfo(client, it, source, item) as Info
}
.let { AccessStream(it) }
Where stream是我们自制的收藏品。Map是一种方法,允许您迭代该集合中的每个项
问题是
client.itemForId(itemId)
是一个http调用,返回一个不理想的
我想在map中创建一个异步调用,该调用将返回Item而不是Single,然后将其传递给ClientInfo。到目前为止,我尝试过在地图中使用订阅和blockingGet()方法,但这会阻止主线程,即使我在不同的线程上观察和订阅
因此,它涉及对集合中的每一个对象进行异步调用
谢谢你的帮助
# 1 楼答案
你应该把这些昂贵的操作包装成一个可观察的对象,并使用平面图将这些数据压缩成客户信息
我写了一个小样本来展示它
# 2 楼答案
您可以尝试返回
Observable<Stream<Info>>
,然后它看起来像: