Scala的理解 - 用IndexedSeq链接Future

时间:2018-01-20 13:13:10

标签: scala for-comprehension

是否有可能实现这样的目标:

for {
  numberOfLines <- Future { getNumberOfLines() }
  i <- 0 to numberOfLines
  result <- Future { extractResultFromLine(i) }
} yield result

我希望很清楚我的意图是什么。

1 个答案:

答案 0 :(得分:2)

您可以使用Future.traverse

// Gives you a Future[IndexedSeq[`whatever extractResult returns`]]
for {
    numberOfLines <- Future{getNumberOfLines()}
    result <- Future.traverse(0 to numberOfLines)(i => Future(extractResultFromLine(i)))
} yield result