Как 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» а также 'карта' операция (вероятно, больше продолжения из последнего вопроса).

Приветствия.

Ответы на вопрос(3)

Ваш ответ на вопрос