使用for comprehension将Scala中的Future [Future [(String,String)]]转换为Future [(String,String)]

Sou*_*nta 2 scala future for-comprehension

我有一个Future[Future[(String,String)]],我想将它转换为Future[(String,String)]使用for comprehension.

elm*_*elm 5

不一定要理解,一个简单的方法涉及使用flatMap结束identity.

考虑一下

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

def f: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
Run Code Online (Sandbox Code Playgroud)

然后

f.flatMap(identity)
res: scala.concurrent.Future[(String, String)] = Promise$DefaultPromise@1849937
Run Code Online (Sandbox Code Playgroud)