等待Future [List [Object]]在Scala中异步完成

时间:2017-05-03 05:19:09

标签: scala asynchronous future

我有Future[List[Object]]喜欢

val futuresList: Future[List[Object]] = foo()

我还有另一种方法可以使用futuresList并进行一些计算。

我希望这个未来能够在我将其传递给另一个返回Future的方法之前完成执行。

val futuresList: Future[List[Object]] = foo()
val anotherFuture: Future[Seq[Object]] = bar(futuresList, x, y)

现在我想异步等待futureList完成,之后我想把它传递给bar()

到目前为止,我已尝试过这个

futuresList.onComplete {
  case Success(data) => {  
    //call bar here, but how do I get access 'anotherFuture' ?
  }
}

通过确保bar()完成,希望获得有关如何从futuresList访问回复的一些指导。感谢

1 个答案:

答案 0 :(得分:1)

val anotherFuture = futuresList.flatMap(data => bar(Future.successful(data), x, y))

或者您更喜欢for-comprehension语法,它是等效的:

val anotherFuture = for {
  data <- futuresList
} yield {
  bar(Future.successful(data), x, y)
}