Scala for / yield块中的执行顺序

时间:2015-11-11 10:39:56

标签: scala concurrency future yield

我使用以下语法进行三次数据库调用(全部返回Future值):

for {
  a <- databaseCallA
  b <- databaseCallB(a)
  c <- databaseCallC(a)
} yield (a,b,c)

第二次和第三次调用取决于第一次调用的结果,但是其中两次可以并行运行。

如何在databaseCallC之后立即发出databaseCallB(无需等待结果b)?

或者这已经发生了吗?

1 个答案:

答案 0 :(得分:9)

目前没有发生这种情况 - 你告诉期货一个接一个地开始。要并行第二次和第三次调用,您可以使用:

radio.phtml

一旦a可用,这将启动b和c的计算,并且一旦所有三个都可用于三联

,则完成