我需要在服务器端进行一些消耗计算(例如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目前正在使用。什么可能是错的,有什么想法吗?
答案 0 :(得分:3)
未来无法在客户端发送,必须在服务器端解析才能显示给客户端。
经典的例子是在控制器中映射未来的结果
def myAction = Action {
Async {
futureResult.map(result =>
Ok(views.html.myView(result))
)
}
}
在您的模板中,使用结果,而不是未来。