当前位置:  开发笔记 > 编程语言 > 正文

合并两个Scala Future [列表]

如何解决《合并两个ScalaFuture[列表]》经验,为你挑选了2个好方法。

我需要将两个Future [List]合并为一个,我想出了以下解决方案:

    def mergeFutureLists[X]( fl1: Future[List[X]], fl2: Future[List[X]] ): Future[List[X]] =
    {
        val lf = List( fl1, fl2 )
        val fll = Future.sequence( lf )
        return fll.map{ x => x.flatMap{ el => el } }
    }

它做我想要的,但它是正确的方式进行?



1> znurgl..:

您可以等待结果,然后将它们组合到一个列表中:

def mergeFutureLists[X]( fl1: Future[List[X]], fl2: Future[List[X]] ) = {
  for{
    f1Res <- fl1
    f2Res <- fl2
  } yield (f1Res ::: f2Res)
}



2> Bruno..:

您还可以使用Future.reduce

def mergeFutureLists[X]( fl1: Future[List[X]], fl2: Future[List[X]]) = {
  Future.reduce(List(fl1, fl2))(_ ++ _)
}

或者,对于任意数量的将来列表:

def mergeFutureLists[X](fl: Future[List[X]]*): Future[List[X]] = {
  Future.reduce(fl)(_ ++ _)
}

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有