method1
は、2つの未来のメソッドsomeFutureMethod1
とsomeFutureMethod2
の結果を返す試みです。どのようにこの作品を作るためのアイデア?理想的には、最初に終了するメソッドは、2番目が終了するまで待ってから、将来の値を組み合わせて返します。2つのScala先物の両方を返すとき
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.zip(future2 ) '。あなたはSeqにもマップします。そのようなFutureのSeqを返す必要があるようですね。 – zhelezoglo
いいえ、それはIntsのペアを返すべきです – ps0604
しかし、Seqのmapは別のSeqを返します。それでは、どのように未来を一つの未来に戻すために結合したいのですか? – zhelezoglo