case object getValues
case class Data(a: Any, b:Any)
class Testing extends Actor {
def receive = {
case "do something" => {
val result2 = { User.getList }
sender ! result2
}
case _ => println("done")
}
}
class Testing2 extends Actor {
def receive = {
case getValues =>
val result2 = { User.getMap }
}yield Data(a,b)
val child = context.actorOf(Props[Testing], "child")//creating actor
implicit val askTimeout = Timeout(1.second)//giving timeout
val r = child ? "do something"
val res = for {
a <- r
} yield (a)
res map (p=>sender ! Data(p, result2))//sending response to the sender
}
}
//Controller
object Application extends Controller {
def testingActor2 = Action.async {
val system = ActorSystem("ActorSystem")
val actor1 = system.actorOf(Props[Testing2], "Testing2")
implicit val askTimeout = Timeout(1.second)
val res = actor1 ? getValues
implicit val formats = DefaultFormats
val result = for {
r1 <- res
} yield r1
result map (r => { println(r); Ok("got result") })
}
我无法将两个参与者的结果都交给控制器。如果我必须获取他们的结果然后将响应发送到页面,请告诉我如何使用演员。