如何在客户端使用scala.concurrent.Future?

时间:2013-04-01 07:34:25

标签: scala playframework future playframework-2.1

我需要在服务器端进行一些消耗计算(例如DB查询和数据分析)。结果需要在浏览器中打印。出于这些目的,我将Future结果从服务器发送到客户端(立即加载网页并逐步从服务器打印未来结果)。例如,在服务器端

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def futureResult = Future { 
  val cc = ConsumingCalculations();
  "some result" 
}

在客户端

@import scala.concurrent.ExecutionContext.Implicits.global
@main{
  @futureResult.onSuccess{ case res =>
    @println("This line is printed in console: "+res);
    <div>Any html code is NOT printed in browser</div>
  }
  Future result is NOT posted
}

在服务器控制台中,我们有:“此行打印在控制台中:某些结果”

但是在浏览器中我们只有:“未来结果未发布”

播放2.1,scala 2.10目前正在使用。什么可能是错的,有什么想法吗?

1 个答案:

答案 0 :(得分:3)

未来无法在客户端发送,必须在服务器端解析才能显示给客户端。

经典的例子是在控制器中映射未来的结果

def myAction = Action {
    Async {
        futureResult.map(result =>
             Ok(views.html.myView(result))
        )
    }
}

在您的模板中,使用结果,而不是未来。