0

我需要在服务器端进行一些消耗性的计算(例如数据库查询和数据分析)。结果需要在浏览器中打印。为此,我将 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
}

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

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

目前使用的是 Play 2.1、scala 2.10。什么可能是错的,有什么想法吗?

4

1 回答 1

3

未来不能在客户端发送,它必须在显示给客户端之前在服务器端解析。

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

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

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

于 2013-04-01T16:26:45.210 回答