我有一个包含多个下拉列表的表单,我在模板中使用 select
和 options
助手创建这些列表。应填充列表的实体取自数据库。但是,从数据库中检索是异步的,因此我应该在操作中使用 Async
,如 example 中所示。 .但是,在我的例子中,我应该等待的不是一个 find
操作,而是一个未知大小的 Future
对象的 Seq
.那么我如何才能在呈现页面之前等待多个 Future
-s 来准备列表呢?或者有更好的方法吗?
最佳答案
如果您没有很好的方法将它们结合起来,Scala futures 将一文不值。
如果您有一系列 future 对象,您可以将其转换为 future 序列:
val futureList = Future.sequence(listOfFutures)
所以现在你有一个单一的 future 要处理。请参阅 Future companion object 上的文档了解其他一些有用的功能,以各种方式组合 future 。
如果您对使用 futures 的其他方式感到好奇(例如,由于它们的单子(monad)性质,您甚至可以使用简单的 for-comprehansion 将它们组合起来),您可能想看看 the primer on Scala futures了解更多信息。
此外,如果您正在使用 ReactiveMongo,那么绝对值得一看 docs on Enumerator/Iteratee implementation玩 2.x。如果您掌握了这种方法,您将能够发挥真正的魔力,即时结合您的 react 数据流等等。
关于scala - Play Framework 2.1 + ReactiveMongo - 填充多个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034188/