未来取决于另一个未来

时间:2019-04-24 17:02:28

标签: scala

我如何使一个未来依赖另一个未来。假设我有这样的期货:

def foo1 : Future[String] = ???
def foo2 : Future[String] = ???
def foo3 : Future[String] = ???
def foo4 : Future[String] = ???

我希望foo4依赖于foo3和foo2,而foo3和foo2依赖于foo1。我该怎么写以理解?

1 个答案:

答案 0 :(得分:1)

如果您以显示方式创建四个Future,则所有四个Future将同时执行:

def foo1 : Future[String] = f1()
def foo2 : Future[String] = f2()
def foo3 : Future[String] = f3()
def foo4 : Future[String] = f4()

如果要使其顺序执行,请执行以下操作:

for {
  foo1 <- f1()
  foo2 <- f2()
  foo3 <- f3()
  foo4 <- f4()
} {
  // do something with the results
}

一旦Future中的一个失败,此操作将立即停止执行,与第一个版本不同,它将同时运行所有四个Future,直至完成。