下面的方法,我有利用異步庫:斯卡拉方法返回一個Future
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]
我不明白?
問題是我的await調用在yield塊中,我不能在這種情況下使用await。我上面展示的例子只是一個簡化版本! – sparkr
好,然後顯示不顯示,也許我們可以找出一些東西。等待當然有其侷限性。 –
它是 - http://stackoverflow.com/questions/32823943/scala-synchronising-asynchronous-calls-with-future – sparkr