0

我有两个演员,A 和 B。我的伪代码如下所示:

if A has a given state
    return "ok"
else 
    send a message to B and return "ok" when B is done handling the message

这是我使用 Await 的实现:

val f1 = (A ? GetState).mapTo[Option[State]]
f1.map {
    case Some(state) => "OK"
    case None =>
        val f2 = B ? Process
        Await.result(f2, 1 seconds) // todo: get rid of this
        "OK"    
}

如果没有等待,我无法弄清楚如何实现这一点。任何人?

4

1 回答 1

3

试试下面的代码,看看它是否适合你:

val f1 = (A ? GetState).mapTo[Option[State]]
f1.flatMap {
    case Some(state) => Future.successful("OK")
    case None =>
        val f2 = B ? Process
        f2.map(t =>  "OK")    
}
于 2013-10-17T11:23:35.517 回答