Следующий метод, который я имею, что делает использование библиотеки асинхронном:метод Scala возвращает будущее
def myMethod(param: Long, isTru: Boolean): Future[Option[MyType]] = async {
if (isTru) {
val promise = Promise[Option[MyType]]
val myFuture = doSomething(param)
myFuture.onComplete {
case Success(succ) => {
promise.success(Some(MyType(param, succ)))
}
case Failure(fail) => promise.failure(fail)
}
promise.future // fails here
}
else {
None
}
}
В нем не компиляции с ошибкой, что:
[error] found: scala.concurrent.Future[Option[MyType]]
[error] required: Option[MyType]
, которые я не понимаю?
Проблема в том, что мои ожидания ждут в блоке доходности, и я не могу использовать ожидание в этом контексте. Пример, который я показал выше, - это просто упрощенная версия! – sparkr
хорошо, тогда показывают неудовлетворительные и, возможно, мы можем что-то понять. Ожидание, безусловно, имеет свои ограничения. –
вот он - http://stackoverflow.com/questions/32823943/scala-synchronising-asynchronous-calls-with-future – sparkr