Play Framework 2.1 + ReactiveMongo - 填充多个下拉列表

non*_*com 4 scala mongodb playframework playframework-2.0 playframework-2.1

我有一个表单,其中包含我创建的多个下拉列表select以及options模板中的帮助程序.应填充列表的实体从数据库中获取.但是,从数据库中检索是异步的,因此我应该Async在操作中使用,如本示例所示.但是,就我而言,我没有一个find操作可以等待,而是一个未知大小SeqFuture对象.那么我怎样才能Future在渲染页面之前等待多个-s准备列表?或者也许有更好的方法来做到这一点?

cof*_*ake 7

如果你没有一个很好的方法来组合它们,Scala期货将毫无价值.

如果你有一系列未来的对象,你可以将它转换为序列的未来:

val futureList = Future.sequence(listOfFutures)
Run Code Online (Sandbox Code Playgroud)

所以现在你有一个未来可以应对.有关其他一些有用的函数,请参阅有关Future随播对象的文档,以各种方式组合期货.

如果你对使用期货的其他方式感到好奇(例如,你甚至可以通过简单的for-comprehansion将它们结合起来,因为它们的monadic性质)你可能想看看Scala期货的入门知识以获得更多的见解.

此外,如果您正在使用ReactiveMongo,那么绝对值得一看有关Play 2.x的Enumerator/Iteratee实现文档.如果您掌握了这种方法,您将能够真正地结合您的反应式数据流以及更多功能.