繁体   English   中英

当两个都结束时返回两个Scala期货

[英]Returning two Scala futures when both end

下面的method1尝试返回两个Future方法someFutureMethod1someFutureMethod2组合的结果。 任何想法如何使这项工作? 理想情况下,首先结束的方法应等到第二次结束,然后返回合并的将来值。

  def method1 ( s: Seq[Int]): Future [(Int,Int)] = {
      s.map { sx =>
          val future = someFutureMethod1 (sx)
          future.map {
            result => result
          }
          val future2 = someFutureMethod2 (sx)
          future2.map {
            result2 => result2
          }
          (result,result2)  // <-- the method should return the two results in the future
       }
  }


def someFutureMethod1 (i: Int) = Future { 
    i + 1
  }

def someFutureMethod2 (i: Int) = Future { 
    i + 2
  }

您将Future合并在地图中,因此看起来您必须返回此类Future的Seq:

def method1 ( s: Seq[Int]): Seq[Future [(Int,Int)]] =
  s.map { sx =>
    val future = someFutureMethod1 (sx)
    val future2 = someFutureMethod2 (sx)
    future.zip(future2)
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM