我有一个Future[Future[(String,String)]]
,我想使用for comprehension将其转换为Future[(String,String)]
。
答案 0 :(得分:5)
不一定要理解,一个简单的方法是使用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
答案 1 :(得分:1)
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
以防你想用于理解。这就是你如何做到的。