Saya memiliki daftar beberapa string, di mana saya perlu mengulangi daftar dalam batch.
Contoh :

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"]
        }

Apakah ada opsi untuk melakukan ini?

0
Stack 29 Maret 2019, 09:45

1 menjawab

Jawaban Terbaik

Pengguna buffer

secara berkala mengumpulkan item yang dipancarkan oleh Observable ke dalam bundel dan memancarkan bundel ini daripada memancarkan item satu per satu

 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]

Operator Buffer mengubah Observable yang memancarkan item menjadi Observable yang memancarkan koleksi buffer dari item tersebut. Ada sejumlah varian dalam berbagai implementasi khusus bahasa Buffer yang berbeda dalam cara mereka memilih item mana yang masuk ke buffer mana.

Perhatikan bahwa jika sumber Observable mengeluarkan pemberitahuan onError, Buffer akan segera meneruskan pemberitahuan ini tanpa terlebih dahulu mengeluarkan buffer, buffer sedang dalam proses perakitan, meskipun buffer tersebut berisi item yang dipancarkan oleh sumber Dapat diamati sebelum mengeluarkan notifikasi kesalahan.

1
Daksh Gargas 29 Maret 2019, 07:19