【发布时间】:2017-08-31 06:55:53
【问题描述】:
我有一个到目前为止我无法解决的问题 我是 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) }
stream 是我们自制的集合。 Map 是一种允许您遍历该集合中的每个项目的方法。
这里的问题是
client.itemForId(itemId)
是一个 http 调用,它返回一个不理想的 Single。
我想在 map 中创建一个异步调用,该调用将返回 Item 而不是 Single,然后将其传递给 ClientInfo。到目前为止,我尝试过的是在地图内使用订阅并使用 blockingGet() 方法,但这会阻塞主线程,即使我在不同的线程上观察和订阅
因此,它涉及对集合中的所有内容进行异步调用。
感谢您的帮助
【问题讨论】:
-
是否需要返回
Stream<Info>或者可以更改? -
不幸的是,必须这样做,很多事情都希望返回这个集合
-
可能是
Single<Stream<Info>>或Observable<Stream<Info>>? -
可能吗?为什么你有解决方案?
-
看看我的回答,也许对你有帮助
标签: java kotlin rx-java rx-kotlin