我想借此VAL:如何拉平期貨的一個列表,斯卡拉
val f = List(Future(1), Future(2), Future(3))
對其執行一些操作(我的想法變平)
f.flatten
而得到這樣的結果
scala> f.flatten = List(1,2,3)
如果扁平方法在這裏不合適,那很好。只要我得到結果。
謝謝!
我想借此VAL:如何拉平期貨的一個列表,斯卡拉
val f = List(Future(1), Future(2), Future(3))
對其執行一些操作(我的想法變平)
f.flatten
而得到這樣的結果
scala> f.flatten = List(1,2,3)
如果扁平方法在這裏不合適,那很好。只要我得到結果。
謝謝!
Future.sequence
需要List[Future[T]]
並返回Future[List[T]]
。
你可以做
Future.sequence(f)
然後用map
或onComplete
它來訪問值列表。
這是我得到的輸出: scala.concurrent.Future [List [Int]] = [email protected] 這是預期嗎?它正在將List [Future [T]]轉變爲未來[List [T]]。 但我期待一些沿線: scala.concurrent.Future [List [Int]] = Future(List(1,2,3)) 謝謝! – mikejones1477 2014-11-03 15:45:32
是的,這是一個'未來'。現在你可以處理它(地圖,使用onComplete或任何你想要的)。 '未來'裏面的結果將成爲你成功的列表 – 2014-11-03 15:47:34
'未來'通常不會打印它裏面的內容(這意味着阻塞)。如果你執行'Future(1)',你會看到'scala.concurrent.impl.Promise $ DefaultPromise @ 78393fdb'。對於測試,你可以使用'Await.result(f,2.seconds)'等東西。 – lmm 2014-11-03 15:53:48
如果其中一個「未來」發生故障,您希望發生什麼? – 2014-11-03 15:42:28
如果有任何期貨失敗,那麼我希望整個事情都失敗。這是一個家庭作業問題的一部分,所以我不打算讓整個事情爲我解決。但基本上,我仍然必須弄清楚如何確定是否有任何期貨失敗,如果他們確實做到了,我就殺了整個事情。 – mikejones1477 2014-11-03 16:38:32