4

我有一个带有多个下拉列表的表单,我使用这些下拉列表selectoptions模板中的助手。应填充列表的实体取自数据库。但是,从数据库中检索是异步的,所以我应该Async在操作中使用,如本例所示。但是,就我而言,我应该等待的不是一个find操作,而是一个未知大小SeqFuture对象。那么如何Future在渲染页面之前等待多个 -s 来准备列表呢?或者也许有更好的方法来做到这一点?

4

1 回答 1

7

如果你没有一个很好的方法来组合它们,Scala 期货将一文不值。

如果您有一个未来对象序列,您可以将其转换为序列的未来:

val futureList = Future.sequence(listOfFutures)

所以现在你有一个单一的未来要处理。有关以各种方式组合期货的其他一些有用功能,请参阅有关未来伴侣对象的文档。

如果您对使用期货的其他方式感到好奇(例如,由于它们的一元性质,您甚至可以使用简单的 for-comprehansion 将它们组合起来),您可能需要查看Scala 期货入门以获得更多见解。

此外,如果您正在使用 ReactiveMongo,那么绝对值得查看有关 Play 2.x 的Enumerator/Iteratee 实现的文档。如果您掌握了这种方法,您将能够即时组合您的反应性数据流等等,创造真正的魔力。

于 2012-12-26T04:18:28.957 回答