我想了解scala期貨中的高階函數。我寫了這段代碼Scala Future oncomplete未完成?
import scala.concurrent.Future
import scala.util.{Failure, Success}
import scala.concurrent.ExecutionContext.Implicits.global
object App30 extends App {
def getMilk(): String = {
val ans = "5 gallons of milk"
ans
}
def getFlour(): String =
{
val ans= "2 oz of flour"
ans
}
val milkFuture = Future { getMilk() }
val flourFuture = Future { getFlour() }
val resultFut = {
for {
milk <- milkFuture
flour <- flourFuture
result = milk + flour
} yield result
}
resultFut.onComplete{
case Success(answer) => println("The result of getting ingridents is " + answer)
case Failure(exception) => println("could not access future value")
}
}
我的問題是,我不能夠獲得所需要的字符串「得到的結果......」。我發現調試器在onComplete時停止,並且不會繼續執行成功的案例。
我可以知道我要去哪裏嗎?如果這是一個愚蠢的錯誤,請指出來,然後我會解決這個問題。否則,請提供關於什麼概念不合適的解釋,因爲這將有助於新人。
感謝
這有很多重複,如https://stackoverflow.com/q/21188012/1296806和相關您的問題https://stackoverflow.com/q/45447679/1296806 –
還有其他問題更大的困惑,當副作用尚未完成時進程退出。但我在辦公室裏,找不到他們。 –