【问题标题】:Converting a Future[Future[(String,String)]] to Future[(String,String)] in Scala using for comprehension在 Scala 中使用 for comprehension 将 Future[Future[(String,String)]] 转换为 Future[(String,String)]
【发布时间】:2014-09-05 12:05:06
【问题描述】:

我有一个 Future[Future[(String,String)]],我想使用 for 理解将其转换为 Future[(String,String)]

【问题讨论】:

标签: scala future for-comprehension


【解决方案1】:

不一定要使用 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

【讨论】:

    【解决方案2】:
    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
    

    以防万一您想用于理解。你就是这样做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      相关资源
      最近更新 更多