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