Rx Java: Список синглов - PullRequest
1 голос
/ 09 июля 2020

У меня проблемы с Rx Java. Я кодирую Kotlin. Вот моя проблема: У меня есть список одиночек. Теперь мне нужны результаты всех одиночных игр, чтобы продолжить. Было бы здорово, если бы одиночные игры могли проходить параллельно и результаты оставались в том же порядке. Когда все одиночные игры выдали свой результат, я хочу продолжить.

val list_of_singles = mutableListOf<Single<Type>>()
val results: List<ResultType> = runSingles(list_of_singles)
// use results here...

Дайте мне знать, если вам нужна дополнительная информация.

Спасибо !!! :)

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Решил так:

    val disposable = Observable.fromIterable(itemList).flatMapSingle { item ->
        getSingle(item)
            .map { singleResult ->
                // do something with single result
            }
    }.doOnComplete {
        // do stuff after processing all singles
    }.subscribe()

    addToCompositeDisposable(disposable)

Работать с фреймворком больше смысла, чем против него.

0 голосов
/ 16 июля 2020

А как насчет Single # zip ?

fun main() {
    val singles = listOf(
        Single.just(1),
        Single.just(2),
        Single.just(3)
    )
    val list : Single<List<Int>> = Single.zip(singles) {
        it.toList() as List<Int>
    }
    
    list.test().assertResult(listOf(1,2,3))
}
...