我有一个带有多个下拉列表的表单,我使用这些下拉列表select
和options
模板中的助手。应填充列表的实体取自数据库。但是,从数据库中检索是异步的,所以我应该Async
在操作中使用,如本例所示。但是,就我而言,我应该等待的不是一个find
操作,而是一个未知大小Seq
的Future
对象。那么如何Future
在渲染页面之前等待多个 -s 来准备列表呢?或者也许有更好的方法来做到这一点?
问问题
724 次
1 回答
7
如果你没有一个很好的方法来组合它们,Scala 期货将一文不值。
如果您有一个未来对象序列,您可以将其转换为序列的未来:
val futureList = Future.sequence(listOfFutures)
所以现在你有一个单一的未来要处理。有关以各种方式组合期货的其他一些有用功能,请参阅有关未来伴侣对象的文档。
如果您对使用期货的其他方式感到好奇(例如,由于它们的一元性质,您甚至可以使用简单的 for-comprehansion 将它们组合起来),您可能需要查看Scala 期货入门以获得更多见解。
此外,如果您正在使用 ReactiveMongo,那么绝对值得查看有关 Play 2.x 的Enumerator/Iteratee 实现的文档。如果您掌握了这种方法,您将能够即时组合您的反应性数据流等等,创造真正的魔力。
于 2012-12-26T04:18:28.957 回答