如何在RxJava2中批量处理要批处理的进程。下面的流程图是我想要实现的目标。
Flowable#1 Flowable#2 (process every 10)
============== ================================
callServer(p1) ->
: -> saveToDatabase(List<r1 to r10>)
callServer(p20)-> saveToDatabase(List<r11 to r20>)
callServer(p21)-> :
: :
callServer(p35)-> saveToDatabase(List<r31 to r35>) //the remainder
目前,我所拥有的是在保存到数据库之前等待返回所有结果。
Flowable.fromIterable(paramList)
.map(p -> callServer(p))
//wait for the return a map of ALL the results r
//how to chain it such that saveToDatabase process after 'n' results
.toList()
.flatmap(listOfR -> saveToDatabase(listOfR);
如何使每个'n'结果后调用saveToDatabase而不是等待所有结果完成?
答案 0 :(得分:5)
使用buffer()运算符将n作为参数,缓冲区将从源Observable
收集n个项目,并将发出包含n个项目的列表。
因此,您可以一次处理每个n项,并将它们保存到数据库