0

A と B の 2 つのアクターがいます。擬似コードは次のようになります。

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"    
}

これを Await なしで実装する方法がわかりません。誰?

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 に答える