にフューチャー内のオブジェクトを取得するために、私は以下のような将来の応答のための別のmyActor2を依頼するアッカmyActor1を使用します。がどのようにScalaの
case class Person(name: String, age: Int)
:
val future = myActor2 ? request
val result = Await.result(future, timeout.duration).asInstanceOf[Person]
だが、結果はこのようなケースクラスであるとしましょう
私はAwait.resultを使用しないようにプロセスをブロックしたくありません。
val future = (myActor2 ? request).mapTo[Person]
今未来は未来である[人]といない未来の[任意]: は、このように私は以下のコードを持っています。 未来に含まれる人物を抽出して例外を処理する方法はありますか? 私はonCompleteで何かを試しましたが、成功は人だけでなくIntを受け入れるようです。私は以下のようなものを望みます:
future onComplete {
case Success(result) => result
case Failure(failure => doSomethingOnFailure(failure)
}
ご存知ありがとうございますか?
2人の俳優の間でコミュニケーションをしているときは、決して尋ねるべきではありません。 tellを使用して、応答メッセージを聞きます。 –
'pipe'関数をチェックしましたか? https://doc.akka.io/docs/akka/current/actors.html?language=scala#ask-send-and-receive-future – mfirry
モナドのコンテキストから値を抽出することはできませんが、内部で作成することはできません。 – cchantep