【问题标题】:Reducing a list of futures减少期货清单
【发布时间】:2016-11-06 15:07:07
【问题描述】:

我有一个长时间运行的函数,它返回如下的未来:

def longRunningFunction(signs: List[String], numOfWords: Int)
    : Future[List[(String, Int)]] = Future{ /* computation */ }

我需要按如下方式减少 Future 的输出:

val all = (6 to 24).map(i => longRunningFunction(signs, i))
                   .reduce(_ ::: _)

但这似乎不起作用。有什么想法吗?

【问题讨论】:

  • 但这似乎不起作用。什么不起作用?更加明确。此外,signs 也没有定义。
  • Signs 只是一个字符串列表。
  • 您的要求不清楚。在reduce() 通话之前,您有一个IndexedSeq[Future[List[(String, Int)]]]。你想减少到什么程度?

标签: scala dictionary future


【解决方案1】:
Future.reduce(futures)(_ ::: _)

Documentation

【讨论】:

    【解决方案2】:

    这就是你要找的东西吗?

    def longRunningFunction(signs: List[String], numOfWords: Int): Future[List[(String, Int)]] = ???
    
    val all: IndexedSeq[Future[List[(String, Int)]]] = (6 to 24).map(i => longRunningFunction(signs, i))
    val result: Future[IndexedSeq[(String, Int)]] = Future.sequence(all).map(_.flatten)
    

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多