我的游戏应用程序中有一个演员,每隔2秒钟便会向某种方法发送一条消息:
onSomething() : Future[Unit] = {
for {
a <- somethingThatReturnsFuture
b <- anotherThingThatReturnsFuture
}
}
此方法有两个返回将来的调用,所以我决定使用for-comprehension,但是for-comprehension是否阻塞?所以即使方法运行了16个实例,akka也无法再次调用此方法?
如果我可以使用我的方法来处理flatMap / map,这将使akka具有更好的性能?像这样:
onSomething() : Future[Unit] = {
somethingThatReturnsFuture.flatMap(res1 => {
anotherThingThatReturnsFuture.map(res2 => {
//whatever
})
})
}
谢谢
假设@Luis Miguel评论:
[当您非常简单地理解时,地图/ foreach替代方案看起来确实更好。一旦开始撰写它们,但是,您很容易迷失括号和嵌套级别。当发生这种情况时,对于理解通常会更加清楚。