У меня есть проблема, которую я не смог решить до сих пор, я новичок в 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) }
Где поток - это наша самодельная коллекция. Map — это метод, который позволяет перебирать каждый элемент в этой коллекции.
Проблема здесь в том, что
client.itemForId(itemId)
это HTTP-вызов, возвращающий Single, который не идеален.
Я хотел бы создать асинхронный вызов внутри карты, который возвращал бы Item вместо Single, а затем передал бы его в ClientInfo. То, что я пробовал до сих пор, заключалось в использовании подписки внутри карты и использовании метода blockingGet(), но это блокирует основной поток, даже если я наблюдаю и подписываюсь на другой поток.
Таким образом, это включает в себя асинхронный вызов для каждой вещи в коллекции.
Спасибо за помощь
Stream<Info>
или можно изменить? - person A. Shevchuk   schedule 31.08.2017Single<Stream<Info>>
илиObservable<Stream<Info>>
? - person A. Shevchuk   schedule 31.08.2017