我必须使用分页查询API。但是因为API很奇怪,我必须查询它,直到响应为空(不包含任何项目)。
实际上它是用Java完成的,用一个do-while:
Future
但我想用scala转换它。我的第一个想法是使用一个带有一个步骤的流,然后继续:
apply
但另一项更改会使render
返回Ok(views.html.test.render())
。因此,我不能在takeWhile中进行测试,并且不知道如何做(可能是递归调用)。
希望这个新代码将成为一个Akka演员,它将为每个对象告诉另一个(不需要返回任何东西)
答案 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()))
}
})
})