Search code examples
scalafuturefor-comprehension

Converting a Future[Future[(String,String)]] to Future[(String,String)] in Scala using for comprehension


I've a Future[Future[(String,String)]] and I want to convert it into a Future[(String,String)] using a for comprehension.


Solution

  • Not necessarily with a for comprehension, a simple approach involves the use of flatMap over identity.

    Consider for instance

    import scala.concurrent.Future
    import scala.concurrent.ExecutionContext.Implicits.global
    
    def f: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
    

    Then

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