Async controller
----------------------------
package beard.controllers import play.api.mvc._ import play.api.libs.json._ import play.api.libs.functional.syntax._ import play.libs.Json._ import reactivemongo.bson._ import service.BeardService import play.api.libs.concurrent.Execution.Implicits.defaultContext import scala.collection.mutable import scala.collection.mutable.ListBuffer import scala.concurrent.Future import scala.util.{Failure, Success, Random} class AsyncBeardController extends Controller { def sayAsyncBeard = Action.async { request => val futureResult = Future { intensiveComputation() } futureResult.map(result => Ok(result) ) } def intensiveComputation(): JsObject = { Thread.sleep(Random.nextInt(5000)) Json.obj("value" -> "beard") } }
Test
-------
$ curl -XGET http://localhost:9000/sayAsyncBeard {"value":"beard"}
You will get the response after ~5seconds.
No comments:
Post a Comment