次のような関数があるとします (私は akka 2.0.2 を使用しています):
def foo(message: String): Future[SomeClass] =
for {
result <- actor ? message
} yield SomeClass(result)
関数の呼び出し元が未来を設定onSuccess
してonFailure
フックするので、アクターに約束を破ってもらいたい場合はakka.actor.Status.Failure
、送信者に送り返すようにします。それはうまくいきます。foo
さて、ある条件をチェックインして、条件が失敗/成功した場合に失敗した未来を返したい場合はどうすればよいでしょうか?
def foo(message: String): Future[SomeClass] =
if(...) {
...//return failed future
} else {
for {
result <- actor ? message
} yield SomeClass(result)
}
「失敗した未来を返す」ブロックはどうあるべきですか? また、それを実装するには実行コンテキストが必要ですか?