gpt4 book ai didi

java - 异步调用集合中的每个项目

转载 作者:行者123 更新时间:2023-11-30 06:31:39 24 4
gpt4 key购买 nike

我有一个到目前为止无法解决的问题我是 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)

是一个返回 Single 的 http 调用,这并不理想。

我想在 map 内创建一个异步调用,该调用将返回 Item 而不是 Single,然后将其传递给 ClientInfo。到目前为止我尝试过的事情是在 map 内使用订阅并使用blockingGet()方法,但这会阻塞主线程,即使我在不​​同的线程上观察和订阅

因此它涉及对集合中的每个事物进行异步调用。

感谢帮助

最佳答案

您可以尝试返回Observable<Stream<Info>>然后它看起来像:

   override fun infos(): Observable<Stream<Info>> = 
Observable.from(client.infoAboutItem(identifier))
.flatMapSingle {
val itemId = it.itemId ?: ""
client.itemForId(itemId)
}
.map {
ClientInfo(client, it, source, item) as Info
}
.toList()
.flatMap {
AccessStream(it)
}

关于java - 异步调用集合中的每个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45975091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com