15

アクター内に次のコードがあります

def receive = {
    case All() => {
        val collection: BSONCollection = db("ping")
        val future:Future[List[Ping]] = collection.find(BSONDocument()).cursor[Ping].toList()
        val zender = sender
        future onComplete {
            case Success(list) => zender ! list
            case Failure(throwable) => zender ! List()
        }
    }
}

結果を送信者アクターに送り返すために onComplete 関数を使用する方法が気に入りません。次のように変換できるかどうか知りたいです。

def receive = {
    case All() => {
        val collection: BSONCollection = db("ping")
        val future:Future[List[Ping]] = collection.find(BSONDocument()).cursor[Ping].toList()
        "sender ! future" // one option
        "future.map( list => sender ! list)" //Another option. I know it's not map, but maybe another function        
    }
}

これは、未来の連鎖でよりよく流れると感じています。

4

2 に答える 2

33

そのためにパイプパターンを使用できます。そうimport akka.pattern.pipeすれば、先物からアクターにメッセージをパイプすることができますfuture pipeTo actor

于 2013-05-06T15:03:30.007 に答える