Я читаю SIP-14, и концепция Future
имеет смысл и легко понять. Но есть два вопроса о Promise
:
-
SIP говорит
Depending on the implementation, it may be the case that p.future == p
. Как это может быть? Существуют лиFuture
иPromise
не два разных типа? -
Когда мы должны использовать
Promise
? Примерproducer and consumer
code:import scala.concurrent.{ future, promise } val p = promise[T] val f = p.future val producer = future { val r = produceSomething() p success r continueDoingSomethingUnrelated() } val consumer = future { startDoingSomething() f onSuccess { case r => doSomethingWithResult() } }
легко читается, но действительно ли нам нужно писать так? Я попытался реализовать его только с помощью Future и без Promise следующим образом:
val f = future {
produceSomething()
}
val producer = future {
continueDoingSomethingUnrelated()
}
startDoingSomething()
val consumer = future {
f onSuccess {
case r => doSomethingWithResult()
}
}
В чем разница между этим и данным примером и что делает обещание необходимым?