Как Scala Futures соединяются вместе с flatMap?
я впервые использую Futures в Scala и проиллюстрировал пример использования комбинатора flatMap; Я'следил за этим обсуждением:
http://docs.scala-lang.org/overviews/core/futures.html
В частности, этот пример:
val usdQuote = future { connection.getCurrentValue(USD) }
val chfQuote = future { connection.getCurrentValue(CHF) }
val purchase = for {
usd
chfQuote
.withFilter(chf => isProfitable(usd, chf))
.map(chf => connection.buy(amount, chf))
}
Что я'у меня возникли проблемы с пониманием того, как и когда выполняется flatMap?
Я понимаю, что usdQuote и chfQuote выполняютсякакая-нить в "когда-то" и их зарегистрированные функции обратного вызова вызваны, вопросы:
a) Выполняются ли одновременно usdQuote и chfQuote? (Я'Я уверен, что они есть).
б) Как flatMap присваивает usd значение Future useQuote? Например, вызывается ли он после завершения операции usdQuote?
c) Какой поток выполняетflatMap» а также 'карта' операция (вероятно, больше продолжения из последнего вопроса).
Приветствия.