У меня проблема с приведенным ниже фрагментом кода. Я хочу, чтобы метод «комбинирования» запускался после завершения всех методов «молотый кофе», «нагреватель воды, вспененное молоко». Они будут запускаться одновременно. Все 4 метода измельчения, нагрева воды, вспенивания молока и пивоварения одновременно выполняются с использованием future.
def prepareCappuccino(): Future[Cappuccino] = {
val groundCoffee = grind("arabica beans")
val heatedWater = heatWater(Water(20))
val frothedMilk = frothMilk("milk")
for {
ground <- groundCoffee
water <- heatedWater
foam <- frothedMilk
espresso <- brew(ground, water)
} yield combine(espresso, foam)
}
Когда я выполняю вышеуказанный метод, я получаю ниже
start grinding...
heating the water now
milk frothing system engaged!
И после этого программа выходит. Я получил этот пример с сайта, когда пытался изучить фьючерсы. Как можно заставить программу ждать, чтобы метод объединения сработал после того, как все фьючерсы вернутся?
import scala.concurrent.duration._ scala.concurrent.Await.ready(prepareCappuccino, 5.seconds)
- person goral   schedule 19.05.2014