Scala, paging without max -
i have query api pagination. because api weird have query until response empty (contains no items).
actually done in java do-while :
do { objects = doquery(from); += 200 } while ( !objects.isempty() ) but convert in scala. first idea use stream step , takewhile :
stream.iterate(0)(_+200) .map( => doquery(from) ) .takewhile( objects -> !objects.isempty ) but changes make doquery returns future. cannot test in takewhile , have no best idea on how (maybe recursive call). new code akka actor tell each object (no need return anything)
this gives stream[future[(boolean, t)]], first time false rest empty. not sure how takewhile without blocking.
stream.iterate(0)(_+200) .scanleft(future((true, list[int]())))({case (prev, from) => prev.flatmap({case (cont, _) => if(cont) { doquery(from).map(res => (res.isempty, res.tolist)) } else { future((false, list())) } }) })
Comments
Post a Comment