Rxjava - повторение списка с помощью пакета - PullRequest
0 голосов
/ 29 марта 2019

У меня есть список некоторых строк, где мне нужно перебрать список в пакетном режиме.
Пример:

val list = ["a","b","c","d","e","f"]
Observable.fromIteratable(list)
          .map{
          //here i need to get 4 items at a time
          //like in first iteration i need to get ["a","b","c","d"]
          //in second iteration i need to get ["e","f"]
        }

Есть ли возможность выполнить это?

1 Ответ

1 голос
/ 29 марта 2019

Пользователь buffer

периодически собирает предметы, испускаемые Обсерваторией, в связки и испускает эти связки, а не испускает предметы по одному

 val list = arrayOf("1", "2", "3", "4", "5")
 Observable.fromIterable(list.asIterable())
     .buffer(4)
     .map { stringList: MutableList<String> ->
       println("insideMap -> $stringList")
       return@map "wow $stringList"
     }
     .subscribe { value: String -> println("OnResult $value")}
//Output
insideMap -> [1, 2, 3, 4]
OnResult wow [1, 2, 3, 4]
insideMap -> [5]
OnResult wow [5]

Оператор Buffer преобразует Наблюдаемое, которое испускает элементы, в Наблюдаемое, которое испускает буферизованные коллекции этих предметов. В различных языковых реализациях Buffer существует несколько вариантов, которые отличаются тем, как они выбирают, какие элементы идут в какие буферы.

Обратите внимание, что если исходная Наблюдаемая выдает уведомление onError , Буфер немедленно передаст это уведомление без предварительной отправки буфера, который находится в процессе сборки, даже если этот буфер содержит элементы, которые были отправлены Наблюдаемый источник до того, как он выпустил уведомление об ошибке.

...