1
我有兩個期貨。我想按順序執行它們。例如:斯卡拉未來執行
val ec: ExecutionContextExecutor = ExecutionContext.Implicits.global
val first=Future.successful(...)
val second=Future.successful(...)
第一次完成後,應執行第二次。的問題是,第二應返回Future[Object]
不Future[Unit]
所以 我不能使用完成,andThen
等功能 我不能阻止使用await
或Thread.sleep(...)
我不能因爲執行上下文循環使用過程中的定義如下。
first.flatmap(_=> second)
將不會按順序執行。 我該怎麼做?
剛把'second'變成'def'而不是'val'? –
也許你可以使用一些輪詢第一個「未來」來完成,當它完成時運行第二個。 – SergeiK
@ SaschaKolberg的建議,試着將'first'和'second'定義爲'def'而不是'val',然後'first.flatmap(_ => second)'將按順序依次完成這兩個期貨。 (沒有必要把'first'定義爲'def',但對於對稱來說它似乎很好,如果first是'def',並且引用first將重新執行'Future.successful(...)'。) –