【发布时间】:2014-09-05 12:05:06
【问题描述】:
我有一个 Future[Future[(String,String)]],我想使用 for 理解将其转换为 Future[(String,String)]。
【问题讨论】:
标签: scala future for-comprehension
我有一个 Future[Future[(String,String)]],我想使用 for 理解将其转换为 Future[(String,String)]。
【问题讨论】:
标签: scala future for-comprehension
不一定要使用 for 理解,一个简单的方法是使用 flatMap 而不是 identity。
例如考虑
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def f: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
然后
f.flatMap(identity)
res: scala.concurrent.Future[(String, String)] = Promise$DefaultPromise@1849937
【讨论】:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val futureOfFutures: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
for(futureOfFuture <- futureOfFutures; futureResult <- futureOfFuture) yield futureResult
以防万一您想用于理解。你就是这样做的。
【讨论】: