Я переношу свой проект с Spring на Ktor и решил заменить реализацию реактивных потоков, которая изначально была Reactor, на RxJava 2. Хотя я столкнулся с некоторой проблемой при попытке объединить несколько потоков в один в конце реактивного конвейера. Вот как это выглядит:
internal interface Aggregator {
fun acquireSomethingFromSomewhere(keyword: String): Flowable<Some>
}
fun acquireSomething(keyword: String) = Flowable
.fromIterable(aggregators)
.map { it.acquireSomethingFromSomewhere(keyword) }
.flatMap { ??? }
Дело в том, что каждый вызов acquireSomethingFromSomewhere
возвращает Flowable<Some>
, есть ли какой-нибудь оператор, который мог бы помочь мне объединить их в один поток в конце? В Reactor я только что использовал:
fun acquireSomething(keyword: String) = Flux
.fromIterable(aggregators)
.map { it.acquireSomethingFromSomewhere(keyword) }
.flatMap { Flux.concat(it) }
Но в RxJava я не могу найти ни одного оператора, который мог бы решить мою проблему, так как каждый из них принимает Publisher
в качестве аргумента, а Flowable
его не реализует.
.flatMap { it.acquireSomethingFromSomewhere(keyword) }
? - person Caramiriel   schedule 26.01.2019