Scala,没有最大值的分页

时间:2016-11-10 10:55:29

标签: scala

我必须使用分页查询API。但是因为API很奇怪,我必须查询它,直到响应为空(不包含任何项目)。

实际上它是用Java完成的,用一个do-while:

Future

但我想用scala转换它。我的第一个想法是使用一个带有一个步骤的流,然后继续:

apply

但另一项更改会使render返回Ok(views.html.test.render())。因此,我不能在takeWhile中进行测试,并且不知道如何做(可能是递归调用)。 希望这个新代码将成为一个Akka演员,它将为每个对象告诉另一个(不需要返回任何东西)

1 个答案:

答案 0 :(得分:0)

这会为您@Singleton提供Stream[Future[(Boolean, T)]],其余内容将为false。不确定如何在不阻止的情况下执行takeWhile

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()))
        }
      })
    })