Расширение Rx Singles zip бесконечно - PullRequest
2 голосов
/ 03 июля 2019

Мне нужно сделать много вызовов API асинхронно и, очевидно, убедиться, что они все проходят, чтобы я мог обработать ошибку / успех в одном месте.

Есть ли способ легко расширить Singles.zip () функциональность в Kotlin, позволяющая принимать более 9 базовых параметров (в лучшем случае, чтобы он принимал любое заданное количество параметров) без выполнения огромного количества операций копирования-вставки при написании собственных расширений для t10, t11 и т. д.?

Ну, написание десятков расширений просто работает, но громоздко, не очень элегантно и добавляет дополнительную работу.

1 Ответ

2 голосов
/ 03 июля 2019

Метод Single.zip принимает итерируемое число синглов

val list = arrayListOf<Single<String>>()
list.add(Single.just("hello"))
list.add(Single.just("world"))

Single.zip(list) { args -> Arrays.asList(args) }
        .subscribeOn(Schedulers.io())
        .observeOn(Schedulers.computation())
        .subscribe()
...