0

サーバー側で消費量の多い計算を行う必要があります (DB クエリやデータ分析など)。結果はブラウザで印刷する必要があります。これらの目的のために、サーバーからクライアントに将来の結果を送信します(Webページをすぐにロードし、サーバーから将来の結果を徐々に出力するため)。たとえば、サーバー側で

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

Future はクライアント側では送信できません。クライアントに表示する前にサーバー側で解決する必要があります。

古典的な例は、コントローラーで将来の結果をマッピングすることです

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

テンプレートでは、未来ではなく結果を使用してください。

于 2013-04-01T16:26:45.210 に答える