【发布时间】:2013-04-30 08:43:45
【问题描述】:
我在 Actor 中有以下代码
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
}
}
我觉得未来的链接会更好。
【问题讨论】:
-
你的第一种方法不行吗?
-
@Alex 是的,但是管道要优雅得多。
-
好的。但是您是说 我不喜欢我必须如何使用 onComplete 函数将结果发送回发送者演员。 而您的代码正是这样做的 - 您将结果发送回发件人演员。